我知道.let {}
,但计算后的表达式位于lambda表达式内,如果您需要在方法内返回某些内容,则该表达式不能很好地工作。
示例问题代码
fun method(): Int {
if (anyObject != null) {
val calculatedValue = anObject!!.awesome()
val magicTrick = calculatedValue + randomMethodName()
return magicTrick
}
return false
}
是否有比此更好的方法
fun method(): Int {
val tempObject = anObject
if (tempObject != null {
val calculatedValue = tempObject.awesome()
val magicTrick = calculatedValue + randomMethodName()
return magicTrick
} else {
return false
}
}
与Swift等效的
fun method(): Int {
if let tempObject = anObject {
let calculatedValue = tempObject.awesome()
let magicTrick = calculatedValue + randomMethodName()
return magicTrick
} else {
return false
}
}
最佳答案
实际上,没有if let
,您的快速代码甚至可以更简单
func method() -> Boolean { return anObject?.someBoolean ?? false }
如果这是您要实现的实际方法,则kotlin等效项是:
fun method() : Boolean = anObject?.someBoolean ?: false
如果需要根据可选属性计算 bool(boolean) 值:
fun method() : Boolean = anObject?.someProperty?.let{functionThatReturnBoolean(it)} ?: false
.let{}
返回其主体内的最后一行,这在许多情况下很有用。如果由于可选链接而
someThing?.let{}
是null
,则someThing
将返回null
。?:
是等效于swift的??
的默认值运算符,当lhs为null
时,它将返回rhs上的值。
关于kotlin - 如果让Kotlin相当于迅捷? -对于类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55491800/