導入
ラムダ式(引数 => 式)は、処理を「その場で」渡すための記法です。特に「条件」を渡す場面が多く、boolを返す処理はPredicateやFunc<T, bool>として、Whereなどと同じ考え方で使われます。
図解
flowchart LR
L["n => n % 2 == 0<br/>(引数 => 条件)"] --> P["条件(bool を返す処理)"]
P --> USE["Where / RemoveAll / Find などに渡す"]
サンプル
var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
// bool を返すラムダ(条件)を、メソッドに渡す
Predicate<int> isEven = n => n % 2 == 0;
Console.WriteLine(isEven(4)); // True
// List.FindAll は条件(Predicate)に合う要素を集める
var evens = numbers.FindAll(isEven);
Console.WriteLine(string.Join(", ", evens)); // 2, 4, 6
// 条件をその場で渡すのが一般的
var big = numbers.FindAll(n => n >= 4);
Console.WriteLine(string.Join(", ", big)); // 4, 5, 6
- ラムダ式
引数 => 式で処理をその場に書く boolを返す処理=条件。Predicate<T>やFunc<T, bool>で表すFindAll/RemoveAll/Whereなど、多くのメソッドが条件ラムダを受け取る
演習
var words = new List<string> { "apple", "kiwi", "banana", "fig" };
// TODO: FindAll と条件ラムダで「5文字以上の単語」を集め、カンマ区切り出力してください
// (apple, banana)
___
- 期待される出力:
apple, banana
ヒント1を見る
words.FindAll(w => w.Length >= 5)
ヒント2を見る
Console.WriteLine(string.Join(", ", words.FindAll(w => w.Length >= 5)));
まとめ
- ラムダ式
引数 => 式で処理をその場に渡す boolを返すラムダ=条件(Predicate/Func<T,bool>)- 多くの標準メソッドが条件ラムダを受け取る
次回: ラムダが外の変数を捕まえる「クロージャ」です。