scala - 在语句中混合 Scala Option 和常规变量

标签 scala option dsl implicits

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

相关文章:

scala - Lagom -LagomServiceLocatorStart :Failed to start embedded Service Locator or Service Gateway?

f# - 如何创建 F# 可变选项类型?

java - JRuby DSL封装,排除标准库

scala - 如何在 Scala intelliJ 项目中将 geoscript 作为依赖项包含在内?

class - Scala:从子类引用伴随对象

scala - SBT - 获取托管 jar 的路径

f# - 强制 F# 类型的字段为空

scala - Scala 中的方法与函数和隐式

scala - 查找在 scala 中传递的 lambda 参数的名称

scala - 在 Scala 中重命名 classOf