使用该.let { }
功能时,我注意到在执行以下操作时:
bucket?.assignedVariantName.let {
bucket?.determineVariant() <-- guarantee safety for bucket
}
在这种情况下,您必须保证存储桶的安全性, bucket?.
或者bucket!!
在使用?.let
then 我注意到执行以下操作时已经保证了空安全性:
bucket?.assignedVariantName?.let { <-- added safety check for property
bucket.determineVariant() <-- doesn't need to guarantee safety for bucket
}
虽然在存储桶的属性上使用 let 而不是直接在存储桶上使用,但我想知道这是故意还是 Kotlin 插件中的错误(在这种情况下,我在 Android Studio 中遇到了这个问题)
附加信息是,在这种情况下,bucket 是一个local val
while assignmentVariantName 是一个可为空的 var。
val bucket: T? = ...