我想编写透明地混合 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/