‫そして､ 昨年は技術的な観点から眼球無数がどのように機能するかを調べました｡
‫そして､ このビデオでは､ それをどのように活用できるかをチェックしていきます｡
‫というのも､ I enumerableの素晴らしいところは､ 私たちが普段使っているリストやキュー配列などのリスト型は､
‫実はすべてAI enumerableインタフェースを実装しているということなのです｡
‫だから､ これで自由度が高くなり､ 何ができるかを考えています｡
‫というわけで､ get collectionというメソッドを用意します｡
‫そして､ その結果､ 整数型の i 列挙体を返します｡
‫だから､ 一度は何かを返さなければならない｡
‫そこで､ このエラーを取り除くために､ とりあえずnullを返しておきましょう｡
‫そして今､ i enumerableを使いたいなら､ system collections genericを追加する必要があることがわかります｡ ここではintegerを使っているので､
‫immutable rebel integerを返すことになるでしょう｡
‫つまり､ この名前空間のコレクションをジェネリックにする必要があるわけです｡
‫さて､ それではこのコレクションはどうしましょうか？
‫だから､ 基本的には複数の選択肢を持つことができる｡
‫つまり､ オプション1を選択すると､ getコレクションはリストを返します｡
‫もしtoというオプションを取ればQを返し､ 3､ 4､ 5など他のオプションを取れば､
‫整数の配列を返します｡
‫つまり､ このコレクション取得メソッドは､ 渡すオプションによって全く異なるタイプのリストを返すことになります｡
‫これがこのget collectionのアイデアです｡ また､ 先ほど言ったように､ リスト､ キュー､
‫配列はすべてAI enumerableインターフェースを実装しているので､ 数字インターフェースのIを使うことの威力も発揮します｡
‫なるほど､ では見てみましょう｡
‫このリストを数字リストと呼ぶことにして､ すぐに初期化することにしましょう｡
‫つまり整数のリストになり､ 数字は1､ 2､ 3､ 4､ 5となります｡
‫そして､ 値の束を持つキューを作ります｡
‫ここで､ 6､ 7､ 8､ 9､ 10と､ この数字に含めていくわけです｡
‫Q そうなんですね｡
‫Q 数値は？
‫Q さて､ カーソルを合わせると､ これもジェネリックコレクションであることがわかりますね｡
‫リストも同様です｡
‫一般的なコレクションです｡
‫I enumerable generic collectionも同様です｡
‫だから､ すでに一定のコレクションがあることがわかる｡
‫では､ これから何をするかというと､ どのようなオプションが取られているかを確認するのです｡
‫では､ 私の収集方法には何が過去にあったのでしょうか？
‫1であれば､ マイナンバーのリストを返します｡
‫2になるなら､ マイナンバーを返します｡
‫Q 全く違うタイプのリストなんですね｡
‫つまり､ 異なる種類の情報と異なる値を含んでいるのですが､ 本当に全く別のものなのです｡
‫つまり､ リストではなくQであり､ QはAリストの一種ではないのです｡
‫だから､ Qはlistを継承していないとか｡
‫だから､ 私たちができることと､ そうでないこと､ それが本当に面白いところなのです｡
‫ですから､ もしオプションが他のものであれば､ このLSケースは1112, 13, 14,
‫50を返すだけとなります｡
‫さて､ この場合､ このreturn文は決して到達しないことがおわかりいただけると思います｡
‫この行は完全に取り除くことができます｡ なぜなら､ もしif else文があり､ ここでたくさんの戻り値があれば､
‫基本的に到達することはないからです｡
‫わかりました｡
‫さて､ このコレクション取得メソッドを手に入れたので､ 実際にメインメソッドで使ってみましょう｡
‫そこで､ ここではアプリケーションの出発点として､ 未知のコレクションを作成することにしましょう｡
‫この変数は､ 整数を使用するか､ 整数を保持する汎用的なコレクションになります｡ この変数を使用して､
‫getコレクションメソッドで返されるコレクションを格納します｡
‫では､ 先ほど作成したこのメソッドに､ 実際にコレクション1を代入してみましょう｡
‫そこで､ 1個を渡したので､ 未知のコレクションが成立するようになった｡
‫ええと､ ここを見ましょう｡
‫こちらのリスト､ こちらのリスト｡
‫キューではなく､ リストです｡
‫だから､ 本当にかっこいいんです｡
‫これで､ コレクション内の各数値について､ getコレクションで取得した値をコンソールに表示できるようになりました｡
‫そこで､ unknownコレクションにあるすべての数字を取得するためにfor eachを使用することにします｡
‫なぜなら､ もし何かがAI enumerableなら､ つまり､ リストや配列､ Qのようなリスト型がAI enumerableインターフェースを実装しているなら､
‫for each loopを使ってそれを反復することができるからです｡
‫では､ この未知のコレクションを調べて､ それぞれの数字についてコンソールに書き込んでみましょう｡
‫では､ 早速実行してみましょう｡
‫そして､ 1､ 2､ 3､ 4､ 5がプリントアウトされたことが確認できる｡
‫だから､ それが功を奏したようだ｡
‫では､ 同じことをやってみましょう｡
‫でも､ コレクションも兼ねて｡
‫だから､ コレクションを取得し､ 我々は今､ Qに戻ります2のオプションを渡します｡
‫しかし､ それは私たちのジェネリックコレクションのベースタイプに格納されます｡
‫なるほど｡
‫つまり､ unknown collectionはenumerableの基本型であり､ 基本的にリストとenumerableの基本型なのです｡
‫Q これで､ 未知のコレクションはリストでもQでも配列でも関係ないから､
‫それを代入すればいいわけだ｡
‫AIの羅列の指示に従うことで､ その実装を追ったわけです｡
‫では､ このコードを実行すると､ 今度は表示されるようになります｡
‫ここの行列は､ 6､ 7､ 8､ 9､ 10｡
‫つまり､ これはキューのintで､ それを表示してくれているわけです｡
‫わかりました｡
‫そして今度は､ 他のタイプのオプションを入力した場合を見てみましょう｡
‫例えば､ 5というオプションを与えるとします｡ この場合､ 基本的に数値の配列を返します｡
‫では､ もう一度実行してみましょう｡
‫そして､ 今､ 11､ 12､ 13､ 14､ 15を返していることがわかるだろう｡
‫ということは､ もちろん､ これらは以前のものです｡
‫だから､ これらの各ループのために｡
‫削除したわけではありません｡
‫もちろん､ それを見て処分することも可能です｡
‫これで､ 配列を行うか､ 配列を表示するかだけとなりました｡
‫そこで､ 私たちは
‫配列を表示するだけです｡
‫それだけです｡
‫この例では､ i enumerableを使うことで､ for each loopやe for each
‫loop labelのように反復可能にしたい汎用リストの､ いわば基本型としてかなり有利であることがわかると思います｡
‫そして､ それが本当に力になるのです｡
‫本当に便利なものですね｡
‫次のビデオでは､ I列挙可能なコレクションをメソッドのパラメータとして渡す別の例を見てみましょう｡
‫わかりました｡
‫というわけで､ 今回の動画はここまでです｡
‫次回作でお会いしましょう｡