https://code.google.com/p/dart/issues/detail?id=21558
今回の要望
List型のfirst
とfirstWhere
が使いにくいので、firstOrDefault
やfirstWhereOrDefault
を作ってくれと頼んだ。
C#のLINQも同じだが、first
は中身が空の時にStateErrorを吐く。firstWhere
はマッチする要素がなくて結果的に空になったらStateErrorを吐く。事前にisEmpty
のチェックをしないといけないのが不便だと思った。LINQにはそれぞれに対応したFirstOrDefault
やLastOrDefault
があるので、Dartにも欲しいなと思って要望を投げた。
却下
そういうメソッドは自分でヘルパーを作ればいいぞと言われた
firstOrDefault(List l, defaultValue v) => l.isEmpty ? defaultValue : l.first;
ごもっともではあるし今までもこうやって書いてきたが、やっぱりDartっぽくない。これを出すなら拡張メソッドを実装して欲しい。
別の人から
別の人から2つ案をもらった。一つ目は上と同じ三項演算子だが、もうひとつはfirstWhere
の完全に知らなかった名前付きパラメータorElse
。
https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart
list.firstWhere((_) => true, orElse: () => null);
条件を満たすものがなかった場合に返す値をちゃんと指定できるようになってましたごめんなさい。
というわけでfirstWhere
に関しては完全に無知でした。first
はしょうがないので今後も三項演算子使って書きます。