Kotlin执行可选操作
我有一个可选的高阶函数(() – >单位)模型?
当我想要调用这个函数,我想知道,我怎么称呼它甚至是可选的。
我知道这个工程
model.action?.invoke()
有一些类似Swift的东西,我可以这样做:
model.action?()
我知道,我也可以做:
model.action?.let { action() }
也许这最后一个是“更好”的路要走。 你知道一些“更好”的方法吗? 谢谢
在大多数情况下, let
stdlib函数是一个不错的选择:
val actionResult = model.action?.let { it() }
请注意let
( model.action
)的接收器可以在lambdaexpression式中访问。
这是个人偏好的问题,但我会留在第一个变体,即
model.action?.invoke()
只是因为它只是invoke操作符的安全调用 ,并没有在expression式中添加更高级别的函数(即let
)的负担。
顺便说一下,在某些情况下,如果你在Idea中写了一些类似于model.action?.let { it() }
的东西(至少它适用于基于Idea的Android Studio),你会得到一个警告,你可以安全地用普通的安全电话代替它。
如果函数返回unit
,我also
使用, let
。 前者是一个副作用的结构,后者用于返回一个值。