私が最初に Scala を見始めたとき、for 内包表記の外観が気に入りました。これらは、私が Java 5 で慣れ親しんだ foreach ループに少し似ているように見えましたが、機能的な制限と多くの優れた構文があります。
しかし、Scala スタイルに慣れてきたので、for 補償を使用できるたびに、代わりにmap
, flatMap
, filter
, reduce
andを使用していることに気付きました。foreach
そうすれば、コードの意図がより明確になり、潜在的な隠れた驚きが少なくなり、通常はコードも短くなります。
私の知る限り、for-comprehension は常にこれらのメソッドにコンパイルされているので、疑問に思っています: それらは実際には何のためにあるのでしょうか? 機能の再評価が欠けていますか (これは初めてではありません)。for-comprehensions は、他の機能ではできないことをしますか、または少なくともはるかに不器用になりますか? それらは特定のユースケースの下で際立っていますか? それは本当に個人的な好みの問題ですか?