我知道,.let {}但评估的表达式在 lambda 表达式中,如果您需要在方法中返回某些内容,则该表达式效果不佳。
有问题的代码示例
fun method(): Int {
if (anyObject != null) {
val calculatedValue = anObject!!.awesome()
val magicTrick = calculatedValue + randomMethodName()
return magicTrick
}
return false
}
Run Code Online (Sandbox Code Playgroud)
有没有比这更好的方法
fun method(): Int {
val tempObject = anObject
if (tempObject != null {
val calculatedValue = tempObject.awesome()
val magicTrick = calculatedValue + randomMethodName()
return magicTrick
} else {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 等价物
fun method(): Int {
if let tempObject = anObject {
let calculatedValue = tempObject.awesome()
let magicTrick = calculatedValue + randomMethodName()
return magicTrick
} else {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,你的 swift 代码可以更简单,没有 if let
func method() -> Boolean { return anObject?.someBoolean ?? false }
Run Code Online (Sandbox Code Playgroud)
如果这是您要实现的实际方法,则 kotlin 等效项是:
fun method() : Boolean = anObject?.someBoolean ?: false
Run Code Online (Sandbox Code Playgroud)
如果您需要从可选的属性计算布尔值:
fun method() : Boolean = anObject?.someProperty?.let{functionThatReturnBoolean(it)} ?: false
Run Code Online (Sandbox Code Playgroud)
.let{} 返回其正文中的最后一行,这在许多情况下很有用。
someThing?.let{}null如果someThing是null由于可选链接,将返回。
?:是等效于??in swift的默认值运算符,当其 lhs 为 时,它返回 rhs 上的值null。
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |