私は Scala にかなり慣れていないので、気になる小さな小さな問題に遭遇しました。デフォルトのパラメーターを持つメソッドがあるとしましょう
def foo(v: Any = "default"): String = s"called with parameter '$v'"
および Option val opt: Option[String]
。オプション値 (定義されている場合) またはデフォルト パラメータを指定してこのメソッドを呼び出す方法は? つまり、明らかな解決策にもかかわらず
val result = if (opt.isDefined)
from.here.to.foo(opt.get)
else
from.here.to.foo()
(おそらく長い)オブジェクトチェーンでメソッドを2回入力する必要がありますか?複数のオプション/デフォルトパラメータがあることは言うまでもありません...
私が思いつくことができるのは、役に立たないヘルパーだけです
def definedOrDefault[A, B](opt: Option[A], f0: => B, f1: A => B): B =
if (opt.isDefined) f1(opt.get) else f0
しかし、高次関数でデフォルトのパラメーターについて言及できない場合...それだけです。メソッドのオーバーロードが同じ問題を引き起こすJavaの悪い昔を思い出します。