为什么..let即使评估结果为非null也会返回nullable

osrl

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章