Kotlin对类属性无效
我怎样才能避免使用!!
为类的可选属性
class PostDetailsActivity { private var post: Post? = null fun test() { if (post != null) { postDetailsTitle.text = post.title // Error I have to still force using post!!.title postDetailsTitle.author = post.author Glide.with(this).load(post.featuredImage).into(postDetailsImage) } else { postDetailsTitle.text = "No title" postDetailsTitle.author = "Unknown author" Toast.makeText(this, resources.getText(R.string.post_error), Toast.LENGTH_LONG).show() } } }
我应该创建一个局部变量? 我想用!!
不是一个好的做法
你可以使用apply:
fun test() { post.apply { if (this != null) { postDetailsTitle.text = title } else { postDetailsTitle.text = "No title" } } }
或与:
fun test() { with(post) { if (this != null) { postDetailsTitle.text = title } else { postDetailsTitle.text = "No title" } } }
这个:
if (post != null) { postDetailsTitle.text = post.title // Error I have to still force using post!!.title } else { postDetailsTitle.text = "No title" }
可以替换为:
postDetailsTitle.text = post?.title ?: "No title"
如果?:左边的表达式不为空,则elvis运算符返回它,否则返回右边的表达式。