Kotlin的标准函数let
定义如下:
public inline fun <T, R> T.let(block: (T) -> R): R
这是否意味着let的返回类型将是块返回的内容?
为什么不起作用?
var a: String? = "maybe null"
val x: Boolean = a?.let {
a.contains("maybe") // note that contains returns Boolean, not Boolean?
}
这会抱怨:类型不匹配:必需Boolean
,已找到Boolean?
它不应该返回一个Boolean
因为contains
函数返回一个Boolean
?
我确定我误会了一些东西。也许有人可以帮助我和其他新手更好地理解。
a?.let
返回您在给定的let块中所做的任何事情,但是a
可能null
不确定let
-block是否被调用。这就是为什么x
必须为null,Boolean?
或者您需要指定ifa
是的情况null
,例如:
val x: Boolean = a?.let { a.contains("maybe") }
?: false // this is used if `a` is null
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句