余白

https://blog.lacolaco.net/ に移転しました

Dartにまた要望投げたらまた蹴られた話

https://code.google.com/p/dart/issues/detail?id=21558

今回の要望

List型のfirstfirstWhereが使いにくいので、firstOrDefaultfirstWhereOrDefaultを作ってくれと頼んだ。

C#LINQも同じだが、firstは中身が空の時にStateErrorを吐く。firstWhereはマッチする要素がなくて結果的に空になったらStateErrorを吐く。事前にisEmptyのチェックをしないといけないのが不便だと思った。LINQにはそれぞれに対応したFirstOrDefaultLastOrDefaultがあるので、Dartにも欲しいなと思って要望を投げた。

却下

そういうメソッドは自分でヘルパーを作ればいいぞと言われた

firstOrDefault(List l, defaultValue v) => l.isEmpty ? defaultValue : l.first;

ごもっともではあるし今までもこうやって書いてきたが、やっぱりDartっぽくない。これを出すなら拡張メソッドを実装して欲しい。

別の人から

別の人から2つ案をもらった。一つ目は上と同じ三項演算子だが、もうひとつはfirstWhereの完全に知らなかった名前付きパラメータorElsehttps://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart

list.firstWhere((_) => true, orElse: () => null);

条件を満たすものがなかった場合に返す値をちゃんと指定できるようになってましたごめんなさい。

というわけでfirstWhereに関しては完全に無知でした。firstはしょうがないので今後も三項演算子使って書きます。