‫初期化レースの宣言とその使い方がわかったところで､ いよいよ配列の値をすべて取得したり､ 配列に値を入れたりするために､
‫for eachループを使ったり､ for eachループのことを知ったりすることにしましょう｡
‫それでは､ numsと呼ぶことにする新しい配列を作成しましょう｡
‫この配列にはいくつかの数値が含まれ､ nums equal new int となります｡ 例えば値が10個あるとすると､
‫この配列には10個の値が含まれ､ すべて整数でなければなりません｡
‫次に､ この整数配列に値を入れるために､ ここでforループを使うことから始めます｡
‫そこで､ ここでは単純にそのインデックスの値を､ まあ､ 値そのものに割り当てているわけです｡
‫だから､ 先にIと言おう｡
‫つまり､ ゼロの位置で､ インデックスゼロの値はゼロになり､ 1の値は1になるわけです｡
‫わかりました｡
‫つまり､ このforループで行うのは､ 9までなので､ 10より低いところまでは､ ほとんど同じです｡
‫だから9まで｡
‫では､ その意味するところを確認してきましょう｡
‫そこで､ ループを通してすべての値を見るために､ 再びINTのforループを使うことができます｡
‫ここではjを使って､ jは0に等しいj lower ten j plus plusとします｡
‫そして､ CWをダブルタップして､ この中の位置ゼロの要素を取得したいのです｡
‫つまり､ 配列から値を取り出して､ それが1になるようにしたいだけなのです｡
‫ここで必要なのは､ JとJの位置のnumsです｡
‫これがインデックスで､ これが実際の値になるわけです｡
‫そして最後に､ ある時点で､ 私たちは皆､ ユーザーの出力や入力を待つ必要があるのです｡
‫わかりました｡
‫では､ それを実行してみましょう｡
‫そして､ 私たちは､ 0要素､ 1〜3などを取得します｡
‫だから､ ここでやったのは単純にそういうことなんです｡
‫それをLet's I don't want to enter I to itに変えればいいのです｡
‫Iプラス10を入力したい｡
‫では､ もう一度実行してみましょう｡
‫そして､ ゼロの位置には､ 10の値があります｡
‫1の位置には11という値があり､ 以下同様です｡
‫わかりました｡
‫だから､ インデックスと同じ値である必要はないのです｡
‫そういうやり方もあるんですね｡
‫しかし､ ここでやっていることは､ かなりリスキーなことなのです｡
‫例えば､ 11までとか11以下と言った場合､ つまり10までということですが､ インデックスが範囲外の例外に遭遇してしまいます｡
‫つまり､ 配列の範囲外のインデックスにアクセスしようとしているのです｡ 配列の範囲は10までしかないので､
‫その11番目の位置にアクセスしようとしているのですが､ これはうまくいかないのです｡
‫そこで､ このようなエラーが発生します｡
‫そこで､ それを回避するために､ 2つの解決策を用意しました｡
‫そのうちのひとつはlengthプロパティを使って､ lengthの長さだけ､ つまりいくつの値を持ちたいかを指定します｡
‫そこで､ もう一度実行すると､ 今度はエラーが出なくなりました｡
‫だから今はそれでいい｡
‫別の方法として､ 各ループに使用することもできます｡
‫それでは､ 各ループの構造を見てみましょう｡
‫まず､ for eachというキーワードを使い､ 括弧の中で新しい変数を作っています｡
‫Kということにしておきます｡
‫そして､ またsoで言う､ 配列名に新しいキーワードを入れる｡
‫だから､ ナムスで｡
‫つまり､ ここにあったのはnums配列の名前です｡
‫そこで､ Kという変数を作り､ 配列全体を走らせると言うわけです｡
‫そうすると､ 単純に同じことができるようになります｡
‫でも､ ちゃんと動かすには､ その位置も知りたいので､ カウンターが必要なんです｡
‫ということで､ カウンターを作って､ ここからもう一度コンソールの右の行の文を使います｡
‫それで､ エレメントがあって､ 今はJとnumsですが､ カウンターとKです｡
‫つまりKは､ 実は特定のインデックスにおける数字の値なのです｡
‫つまり､ 最初はインデックスゼロで､ 次にインデックス1､ インデックス2というように｡
‫では､ numsにはいくつのエントリーがあるのでしょうか？
‫そして､ それぞれのループの中で､ Kが現在のインデックスの値であると言うだけです｡
‫つまり､ 最初はインデックスゼロで､ 次にインデックス1､ インデックス2......という具合です｡
‫だから､ それをもう一度実行すれば｡
‫10から19になり､ また10から19になるのが目に見えています｡
‫わかりました｡
‫このfor eachループは､ これとよく似ていますね｡
‫ループの場合､ 同じことをします｡
‫だから､ 単純にアレイを通すだけで､ かなり効果的に使えるので､ かなりイケてますね｡
‫では､ forループに対するfor eachの目的は一体何なのでしょうか？
‫つまり､ Kは配列自体の値と同じ型を持っているということです｡
‫この場合､ ループの値として常に整数を用意しています｡
‫つまり､ ループの値はこのjか､ 通常ではIになります｡ 例えば､ このforループではIです｡
‫つまり､ forループでは常に整数ですが､ for eachループでは､ 常に配列のデータ型になります｡
‫そうすると､ 境界を指定する必要がないので､ いつ始まっていつ終わるかを伝える必要がなく､
‫常に配列そのものだけでそれがわかるようになりました｡
‫つまり､ 配列に5つの値があるとすると､ 5回実行する必要があることがわかるのです｡
‫さて､ 性能面では､ ほとんどの場合､ E for each loopよりもfor loopの方が高速です｡
‫でも､ もっと深く掘り下げたいなら､ 自分で調べればいいだけの話です｡
‫そこで､ 複雑なfor eachループとforループを作成し､ 互いに比較してどちらがより良いパフォーマンスを発揮するかをテストします｡
‫わかりました｡
‫では､ ちょっと挑戦してみましょう｡
‫ここに打ち出します｡
‫わかりました｡
‫だから､ それはとてもシンプルなことなんです｡
‫仲良し5人組でアレイを作る｡
‫データ型が明確であるべきで､ それから､ すべての人に挨拶するfor eachループを作成します｡
‫だから､ ビデオを投稿して､ それをやってみてください｡
‫わかりました｡
‫ぜひ試してみてください｡
‫そこで､ ここにあるコードをすべて取り除くことにします｡
‫そして､ 配列を作成します｡
‫ストリングは､ 私の友人たちは､ マイケルと同等です｡
‫ルッツ､ エリア､ アンディ､ ダニエル｡
‫そうですね｡
‫というわけで､ 私の友人たちです｡
‫そして今度は､ それらすべてを通過するfor eachループを作成しました｡
‫だから､ 私の友人で文字列の名前｡
‫そして今､ すべての人に挨拶をしよう｡
‫で､ CWダブルタップコンソールですよね？
‫こんにちは｡
‫そして､ ゼロを使う｡
‫さあ､ 友よ｡
‫そして､ これが名前になるんです｡
‫そして最後にコンソールで､ 私たちが見ることができるように､ またはプログラムを終了するか､ 解決することができるように､ 右のキー｡
‫では､ それを実行してみましょう｡
‫そこで､ 私たちは
‫こんにちは､ マイケルです｡
‫こんにちは｡
‫友人などどちらか｡
‫だから今は友達みんなに読んでもらっていますが､ それを手動でやる必要はなかったんです｡
‫ひとつひとつ､ 丁寧に｡
‫そのために単純にfor eachループを書いて､ 全部に挨拶しています｡
‫それはもう､ とてもシンプルなボットなんですね｡
‫私たちが単純に友達に同意したものですが､ もっと複雑にすることもできます｡
‫例えば､ ここにメールのリストを作り､ メールサービスやメーリングサービスを作り､ メールを作って一人ずつ全員に送信することもできます｡
‫そして､ それを自動的にfor eachループで行う｡
‫わかりました｡
‫さて､ ここまででraceの使い方はお分かりいただけたと思いますが､ raceについてはまだまだ知りたいことがたくさんあります｡
‫そして､ その様子は次の動画でご覧いただきます｡
‫では､ 現地でお会いしましょう｡