有没有更好的方法用科特林写这个?
Is there a nicer way to write this in kotlin?
这是我当前的代码:
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 中有没有更好的方式来写最后一行?
一种方法是检查可空表达式的结果是否等于 true
:
isRefreshing = savedInstanceState?.getBoolean(EXTRA_IS_REFRESHING, false) == true
也可能是elvis算子:
isRefreshing = savedInstanceState?.getBoolean(EXTRA_IS_REFRESHING, false) ?: false
对于我来说,第一段代码更能表达意图,所以我更喜欢它。
在这种情况下,您可以完全删除 if
并将 isRefreshing
分配给条件表达式。此外,正如 @s1m0nw1 所提到的,智能转换消除了对 !!
或 ?.
.
的需要
isRefreshing = savedInstanceState != null &&
savedInstanceState.getBoolean(EXTRA_IS_REFRESHING, false)
通常你会将不止一件东西置于保存状态。在那种情况下,我使用这个:
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)
} // ...
这是我当前的代码:
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 中有没有更好的方式来写最后一行?
一种方法是检查可空表达式的结果是否等于 true
:
isRefreshing = savedInstanceState?.getBoolean(EXTRA_IS_REFRESHING, false) == true
也可能是elvis算子:
isRefreshing = savedInstanceState?.getBoolean(EXTRA_IS_REFRESHING, false) ?: false
对于我来说,第一段代码更能表达意图,所以我更喜欢它。
在这种情况下,您可以完全删除 if
并将 isRefreshing
分配给条件表达式。此外,正如 @s1m0nw1 所提到的,智能转换消除了对 !!
或 ?.
.
isRefreshing = savedInstanceState != null &&
savedInstanceState.getBoolean(EXTRA_IS_REFRESHING, false)
通常你会将不止一件东西置于保存状态。在那种情况下,我使用这个:
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)
} // ...