C#を勉強すると、ラムダ式の壁にぶつかった。何度勉強しても、難しく感じる。ラムダ式を書くにあたり、「ラムダ式の{}の中が1つの文の場合は、{}とreturnを省略することができる」などのルールが存在するが、それらを全て覚えることは不可能だと判断した。
ここでは、ラムダ式を使った例を書く。
奇数の数をカウントする
var count = Count(numbers, n => n % 2 == 1);
5以上の数をカウントする
var count = Count(numbers, n => n >= 5);
5以上10未満の数をカウントする
var count = Count(numbers, n => 5 <= n && n < 10);
数字の1が含まれている数をカウントする
var count = Count<numbers, n => n.ToString().Contains('1'));
なお、ラムダ式が渡されているCountメソッドは以下のようになっている。
public int Count(int[] numbers, Predicate<int> judge) { int count = 0; foreach (var n in numbers) { if (judge(n) == true) count++; } return count; }
第二引数として渡しているPredicateデリゲートは、ある基準を満たしているかどうかを判断するメソッドを表している。
これにラムダ式を指定することで、Countメソッドでいうと、if文の条件を汎用的に変更できる。
|