‫この講義では､ 人のリストをフィルタリングするために独自のデリゲートを作成し､ デリゲートがどのように機能するかをより深く理解することができます｡
‫そこで､ ここにある次のようなクラスを考えてみましょう｡
‫つまり､ 名前と年齢のプロパティを持つ非常にシンプルなクラスです｡
‫ここでは2つの物件だけ｡
‫そこで､ 年齢で人を絞り込むデリゲートを独自に作りたいと思います｡
‫このフィルターデリゲートはパラメータとして人を受け取り､ 年齢に関する条件を満たした場合にboolを返します｡
‫具体的にはどのような状態なのでしょうか？
‫まあ､ このコードは例えばウェブページのリストをフィルタリングするために使われるかもしれないし､ フィルタリング機能はどんどん変わっていくかもしれないので､
‫気にしないことにしよう｡
‫そして､ まあ､ それこそがデリゲートの良さでもあるのですが｡
‫なんて贅沢なんでしょう｡
‫わかりました｡
‫では､ デリゲートタイプを定義してみましょう｡
‫というわけで､ このままではBoolean型のデリゲートになってしまうので､ 先に言っておきます｡
‫フィルターデリゲートと呼ぶことにします｡
‫そして､ それには人が必要です｡
‫つまり､ Pという人物オブジェクト｡
‫それでは､ 人物のリスト､ いわば人物オブジェクトを少し作ってみましょう｡
‫ここでは､ 4人の人物オブジェクトを用意しました｡
‫P one､ P two､ P three､ P four｡
‫そして､ それらをすべてリストに追加していくのです｡
‫ここでは年齢だけでなく､ 名前も違うんですね｡
‫そこで､ 今度は実際に年齢を基準にしたフィルタリングを行いたいと思います｡
‫例えば､ 18歳以上の成人のみを表示したり､ 18歳未満の未成年者のみを表示したりすることができます｡
‫異なるフィルターを適用したいので､ 実際にdisplay peopleというメソッドを作ってみましょう｡
‫このメソッドは､ 人のリストとフィルタをデリゲートとして受け取り､ そのフィルタに基づいて人のリストをフィルタリングします｡
‫そこで､ コンソールでの見栄えをよくするために､ titleという文字列も投げ込みたいと思います｡
‫ではまず､ ここで私のメソッドのヘッダーを設定します｡
‫そこで､ ここではdisplay peopleのメソッドを紹介します｡
‫これは､ 文字列､ 人々のリスト､ そして私がfilterと呼ぶフィルターデリゲートを必要とします｡
‫さて､ ここでやりたいことは何だろう？
‫さて､ まずはタイトルを書きますね｡
‫そして､ この個人用リストの中にいる人たちをすべて見ていきます｡
‫そして､ パスした相手でフィルターが効くかどうかを確認するんです｡
‫そこで､ ここでは､ 人の名前と､ 何歳かを言うことにします｡
‫次に､ フィルターとして使用するいくつかのメソッドを定義します｡
‫だから､ 1つは鉱山労働者のためのものでしょう｡
‫そこで､ マイナーを紹介します｡
‫そこで､ その方をお預かりして､ 18歳と照らし合わせて年齢を確認します｡
‫そして､ それより低い場合は､ 戻る必要があると判断しています｡
‫真､ つまりその人は鉱夫である｡
‫それ以外の場合はfalseを返します｡
‫それが1つのフィルターになるわけです｡
‫では､ もう一つ大人用のフィルターをこんな風に作ってみましょう｡
‫そして､ もうひとつ､ シニア向け､ つまり65歳以上の人向けのフィルターです｡
‫ようなものです｡
‫それでは､ mainメソッドで､ 先ほど作成したdisplay peopleメソッドを何度か呼び出してみましょう｡
‫では､ メインメソッドに進みましょう｡
‫そして､ ここでは人を表示させ､ ここではタイトルで渡すだけにしています｡
‫子供と言うのは､ 例えば､ 私のフィルターだけでなく､ 人物リストでもパスしているんです｡
‫そこで､ 私のイズ・マイナー・フィルターで､ このようにイズ・マイナーと呼んでいます｡
‫そして､ 今度はそれを確認しましょう｡
‫これを実行して､ 子供を表示させるかどうかを確認しましょう｡
‫しかも､ 12歳のウォルターしか表示されない｡
‫なるほど､ このフィルターが効いていたんですね｡
‫このメソッドにパラメータを渡す必要はありません｡ なぜなら､ このメソッドはデリゲートの位置で渡されたものだからです｡
‫このフィルターデリゲートですが､ もう少し見やすくするために､ 少しスクロールしてみましょう｡
‫つまり､ filter delegateの記述に従うだけで､ ebullientを渡すだけでよく､
‫person型のパラメータを1つ持つ必要があるメソッドを渡すことができる｡
‫そして､ それを実現するのが､ 私がここで言う「スラッシュフィルター」なのです｡
‫これらはブール値を返し､ 人物Pを必要とする｡
‫だから､ もしマイナーなものがその構造に従っていなかったら､ これはうまくいかないでしょう｡
‫ですから､ 例えばここでこれを取り除いてtrueを返すとしたら､ これはうまくいかないでしょう｡
‫あなたはここでそれがよくプログラムドットフィルタデリゲートにメソッドグループを変換することができますマイナーであると言う参照してくださいので､
‫それは我々の代表の指示に従わないように｡
‫わかりました｡
‫では､ 同じことを他のタイプのフィルターでもやってみましょう｡
‫だから､ まずは大人と､ そしてシニアと｡
‫では､ 見てみましょう｡
‫そして､ 子供のウォルター､ 大人のエイデン､ アナトリー､ そしてシニアだけのシヴを見ることができます｡
‫しかも69歳｡
‫というわけで､ 代表者の紹介はここまで｡
‫しかし､ ここにある迷惑なパターンにお気づきかもしれません｡ 次回の講義でそれを解消する予定ですが､
‫それは匿名メソッドのパターンです｡
‫それでは､ 会場でお会いしましょう｡