メイベスはスカラにとって良いパターンですか?
質問
しばらくの間、私はScalaをnullを返す可能性のあるJavaメソッドと統合するのに苦労してきました。私は次のユーティリティを思いつきました。
// produce an Option, nulls become None
object Maybe {
def apply[T](t:T) = if (t==null) None else Some(t)
}
Maybe(javaClass.getResultCouldBeNull()).map( result => doSomeWork(result) )
この解決策についていくつか質問があります。
- 使用するより良いまたはより多くの標準パターンはありますか?
- すでに存在するものを複製していますか?
- この機能には隠されたゴッチャがありますか?
解決
Scalaの組み込み オプション 再発明しようとしているものです。
その場合:
scala> val sOpt: Option[String] = Option(null)
sOpt: Option[String] = None
他のヒント
なぜそれからコンパニオンオブジェクト全体を作るのにわざわざするのですか?これは単なる関数なので、関数のように見えるオブジェクトとして実装する必要はありません。
object MyUtilities{
// a whole bunch of other utilities that you use all over can also be put in this class.
def maybe[T](t:T) = if (t==null) None else Some(t)
}
所属していません StackOverflow