让我们假设你有两个可以归零的功能,你不能编写这两个函数:
fun giveInt(x: Int):Int? = x+1
fun giveInt2(x: Int):Int? = x+2
Run Code Online (Sandbox Code Playgroud)
为了实现这个组合,我写了这个函数:
fun all(x:Int):Int? {
val y = giveInt(x)
if (y != null) return giveInt2(y) else return null;
}
val four = all(1)
Run Code Online (Sandbox Code Playgroud)
是否有可能构成2个空的值来获得另一个为空的没有明确的写作if (y != null)和return null?
在Scala我会做的事情如下:
def giveInt(x: Int):Option[Int] = Some(x+1)
def giveInt2(x: Int):Option[Int] = Some(x+2)
def all(x:Int): Option[Int] = giveInt(x).flatMap(giveInt2)
Run Code Online (Sandbox Code Playgroud)
我应该使用java Optional来实现这一点,还是可以使用?运算符?
谢谢 :)
可以使用这样的safe call ?.运算符和let函数组合:
fun giveInt(x: Int):Int? = x+1
fun giveInt2(x: Int):Int? = x+2
fun all(x: Int): Int? = giveInt(x)?.let { giveInt2(it) }
Run Code Online (Sandbox Code Playgroud)
对于更多这样的习语,请使用此链接.
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |