oym*_*oym 0 functional-programming scala
我发现自己在Option值上使用Scala map函数,如下所示:
optionVal.map( val => {
doSomethingWith(val)
doSomethingElseWith(val)
// etc. (an example could be executing a database query)
})
Run Code Online (Sandbox Code Playgroud)
其中optionVal可以是例如:
Option[String]
Run Code Online (Sandbox Code Playgroud)
换句话说,我使用它作为一种方法来确保Option填充了某些内容,如果是这样,则执行一个语句块.
对于我来自Java世界来说似乎有点奇怪和错综复杂,只会检查对象(if (someObject != null) { // execute statements}).此外,似乎它可能在语义上不是地图功能的目的,即使它有效.所以我想检查这是否是在Scala中执行此操作的正确/惯用方法.
如果doSomethingwith(value)返回Unit,则可以使用foreach:
def doSomethingWith(value: Int): Unit = println(value)
val opt: Option[Int] = Some(1)
opt.foreach{ value =>
doSomethingWith(value) // prints the value
}
val noOpt: Option[Int] = None
noOpt.foreach{ value =>
doSomethingWith(value) // Does nothing, because noOpt is empty.
}
Run Code Online (Sandbox Code Playgroud)
如果您打算映射(以某种方式返回)其中的值Option,则继续使用map.
映射Option到Unit无害,但它会使您的代码更易于使用foreach.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |