Option[T]Scalaは、クラスの階層を提供します。これは、特に、Some[T] extends Option[T]をNone extends Option[Nothing]返すことができるJavaメソッド呼び出しをラップするのに役立つことがわかりました。null
val result = Option(someJavaMethodThatReturnsNull())
resultJavaメソッドがオブジェクトを返したか、を返したかに応じて、0個または1個のアイテムのシーケンスのように機能しますnull。、などのOptionメソッドがあります。これらのメソッドは、シーケンスのメソッドと同じように使用でき、元のシーケンスが。の場合、または元のシーケンスがの場合は、新しいシーケンス()を返します。mapfilterSomeSome[T]NoneNone
Clojure関数seqも同様に動作するようです。xがnullでない場合、(seq x)またはxがnullの場合、1つのアイテムのシーケンスになりnilます。この値は、Scalaメソッドと同じよう(map ...)に、などに渡すことができます。(filter ...)Option
私は何かが足りないのですか?このパターンは意味がありますか?これは「ユーレカ!」ですか 経験豊富なClojureプログラマーにとって明らかな瞬間ですか?