这是我目前的代码:
private val EXTRA_IS_REFRESHING = "IS_REFRESHING"
private var isRefreshing: Boolean = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
isRefreshing = if (savedInstanceState != null)
savedInstanceState!!.getBoolean(EXTRA_IS_REFRESHING, false)
else false
}
Kotlin有没有更好的方法来写最后一行?
答案 0 :(得分:3)
其中一种方法是检查可空表达式的结果是否等于true
:
isRefreshing = savedInstanceState?.getBoolean(EXTRA_IS_REFRESHING, false) == true
或者它可能是 elvis 运营商:
isRefreshing = savedInstanceState?.getBoolean(EXTRA_IS_REFRESHING, false) ?: false
至于我,第一段代码显示意图更好,所以我更喜欢它。
答案 1 :(得分:1)
在这种情况下,您可以完全删除if
并将isRefreshing
分配给条件表达式。此外,正如@ s1m0nw1所述,智能投射不再需要!!
或?.
。
isRefreshing = savedInstanceState != null &&
savedInstanceState.getBoolean(EXTRA_IS_REFRESHING, false)
答案 2 :(得分:0)
通常你会将多个东西放入已保存状态。在那种情况下,我使用这个:
if (savedInstanceState != null) {
// savedInstanceState is inferred non-null at this point, so no !!.
isRefreshing = savedInstanceState.getBoolean(EXTRA_IS_REFRESHING, isRefreshing)
} else {
// First start.
}
但那很无聊。既然我们在Kotlin,我也可以想象:
savedInstanceState?.apply {
isRefreshing = getBoolean(EXTRA_IS_REFRESHING, isRefreshing)
} ?: run {
// First start.
}
或
savedInstanceState?.also {
isRefreshing = it.getBoolean(EXTRA_IS_REFRESHING, isRefreshing)
} // ...