4

2 つのオプションがあるとします。

val a: Option = Some("string")
val b: Option = None

a と b の両方が定義されていることを効率的にチェックする方法は?

私は今、次のようなものを書くことができます:

if (a.isDefined && b.isDefined) {
....
}

しかし、それは見栄えが悪く、効率的ではありません。

そう。どうやってするか?ベスト プラクティスとは

アップデート

ビジネスロジックを実行したい。

if (a.isDefined && b.isDefined) {
   ....

   SomeService.changeStatus(someObject, someStatus)

   ...
   /* some logic with a */
   /* some logic with b */
}
4

3 に答える 3

6

あるいは、楽しみのために、

scala> val a: Option[String] = Some("string")
a: Option[String] = Some(string)

scala> val b: Option[String] = None
b: Option[String] = None

scala> val c = Option("c")
c: Option[String] = Some(c)

scala> (a zip b).nonEmpty
res0: Boolean = false

scala> (a zip c).nonEmpty
res1: Boolean = true

scala> (a zip b zip c).nonEmpty
res2: Boolean = false
于 2014-04-10T00:10:08.963 に答える
5

for理解を使用します。

val a: Option[String] = Some("string")
val b: Option[String] = None

for {
    aValue <- a
    bValue <- b
} yield SomeService.changeStatus(someObject, someStatus)
于 2014-04-09T23:36:19.670 に答える