0

これをscalaで書くよりクリーンな方法はありますか?

def myFunction(somethingA: String, somethingB: Option[String]): Unit =
  if (somethingB.isDefined) 
    foo("somethingA" -> somethingA, "somethingB" -> somethingB.get) 
  else
    foo("somethingA" -> somethingA)

私は次のようなことを考えていました:

def myFunction(somethingA: String, somethingB: Option[String]): Unit =
  foo("somethingA" -> somethingA, somethingB.map("somethingB" -> _).getOrElse(.... pleh ....))

しかし、「.... pleh ....」の部分を何らかの式に置き換えても、somethingBが定義されていない場合はマッピングを追加したくありません。なので、リモートワークは考えていません。正しい解決策がわからない。

4

4 に答える 4

2

あまりきれいではありません:

def myFunction(somethingA: String, somethingB: Option[String]): Unit = somethingB match {
  case Some(b) => foo("somethingA" -> somethingA, "somethingB" -> b)
  case None    => foo("somethingA" -> somethingA)
}
于 2013-06-25T23:52:21.977 に答える
0

私の2セント:

val a = "somethingA" -> somethingA

somethingB.map{ b =>
   foo(a, "somethingB" -> b) 
}.getOrElse { foo(a) }

ほとんど読みにくい。ところで。値に応じて呼び出しバインディングを変更できるとは思わない:(

于 2013-06-26T00:05:57.910 に答える