質問

しばらくの間、私は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) )

この解決策についていくつか質問があります。

  1. 使用するより良いまたはより多くの標準パターンはありますか?
  2. すでに存在するものを複製していますか?
  3. この機能には隠されたゴッチャがありますか?
役に立ちましたか?

解決

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)
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top