你知道有没有捷径可以实现:
if (x == null) null else f(x)
对于Java Optional
,您只需执行以下操作:
x.map(SomeClass::f)
发布于 2018-01-27 01:51:38
Kotlin使用自己的方法来实现Option
的概念,但也有map
、filter
、orElse
等效项:
val x: Int? = 7 // ofNullable()
val result = x
?.let(SomeClass.Companion::f) // map()
?.takeIf { it != 0 } // filter()
?: 42 // orElseGet()
我最终写了一个full comparison here
发布于 2018-01-27 01:28:07
您可以尝试使用let
(link to documentation):
x?.let(SomeClass::f)
示例
fun f(n: Int): Int {
return n+1
}
fun main(s: Array<String>) {
val n: Int? = null
val v: Int? = 3
println(n?.let(::f))
println(v?.let(::f))
}
此代码打印如下:
null
4
发布于 2018-01-27 01:34:00
在这种情况下,您可以使用let,如下所示:
fun f(x : Int) : Int{
return x+1
}
var x : Int? = 1
println(x?.let {f(it)} )
=> 2
x = null
println(x?.let {f(it)} )
=> null
正如@user2340612所提到的,它也可以写成:
println(x?.let(::f)
https://stackoverflow.com/questions/48466390
复制相似问题