您知道是否有快捷方式:
if (x == null) null else f(x)
对于Java Optional
,您可以这样做:
x.map(SomeClass::f)
答案 0 :(得分:8)
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:
答案 1 :(得分:3)
您可以尝试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
答案 2 :(得分:3)
你可以在这种情况下使用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)