Kotlin相当于Java8中的Optional :: map

Kon*_*rad 3 nullable kotlin

你知道是否有一个快捷方式:

if (x == null) null else f(x)
Run Code Online (Sandbox Code Playgroud)

对于Java, Optional您可以这样做:

x.map(SomeClass::f)
Run Code Online (Sandbox Code Playgroud)

Grz*_*rek 10

科特林利用自己的方式的想法Option,但很map,filter,orElse等价物:

val x: Int? = 7                 // ofNullable()

val result = x
  ?.let(SomeClass.Companion::f) // map()
  ?.takeIf { it != 0 }          // filter()
  ?: 42                         // orElseGet()
Run Code Online (Sandbox Code Playgroud)

我最后在这里写了一个完整的比较: