这种常见的模式感觉有点冗长:
if (condition)
Some(result)
else None
Run Code Online (Sandbox Code Playgroud)
我在考虑使用一个函数来简化:
def on[A](cond: Boolean)(f: => A) = if (cond) Some(f) else None
Run Code Online (Sandbox Code Playgroud)
这将顶部示例缩减为:
on (condition) { result }
Run Code Online (Sandbox Code Playgroud)
这样的事情已经存在吗?或者这有点矫枉过正?
dre*_*xin 24
您可以创建第Option一个并根据您的条件过滤:
Option(result).filter(condition)
Run Code Online (Sandbox Code Playgroud)
或者如果condition与...无关result
Option(result).filter(_ => condition)
Run Code Online (Sandbox Code Playgroud)
Ben*_*mes 18
import scalaz.syntax.std.boolean._
true.option("foo") // Some("foo")
false.option("bar") // None
Run Code Online (Sandbox Code Playgroud)
Xav*_*hot 10
现在,随构建器提供了Starting Scala 2.13,它可以执行以下操作:Optionwhen
Option.when(condition)(result)
Run Code Online (Sandbox Code Playgroud)
例如:
Option.when(true)(45)
// Option[Int] = Some(45)
Option.when(false)(45)
// Option[Int] = None
Run Code Online (Sandbox Code Playgroud)
另请注意,耦合unless方法的作用相反。
| 归档时间: |
|
| 查看次数: |
4169 次 |
| 最近记录: |