我想编写透明地混合 Scala 选项和常规变量的条件语句。
例如:

var o1 = Some(1)
var o2: Option[Int] = None

var x = 2

val test1 = x < 3 && o1<5  //=> should be true or Some(true)
val test2 = x < 3 && o2<5  //=> should be false or None
val test3 = x < 3 || o2<5  //=> should be true (o2 not evaluated)

我当然可以写
 test1 = x < 3 && o1.exists (_<5)

但我更喜欢更简洁的语法。

任何提示?我应该使用运算符扩展“选项”,还是使用隐式,或类别理论或其他?

编辑:更正声明。

最佳答案

Option[Int]Option[Boolean] 的映射怎么样?

x < 3 && (o1 map {_ < 5} getOrElse false)
x < 3 && (o2 map {_ < 5} getOrElse false)
x < 3 || (o2 map {_ < 5} getOrElse false)

关于scala - 在语句中混合 Scala Option 和常规变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10677323/

10-10 11:35