【发布时间】:2021-12-30 11:55:15
【问题描述】:
我正在学习使用 android studio 构建一个简单的 android 应用程序,并且我创建了一个函数来查找某些值的 id。在编写这个函数时,我想使用 when 语句(Kotlin),但遗憾的是不得不重复它。有没有办法将 when 语句的结果同时分配给多个变量?在其他语言中,我只会返回一个我会反汇编的列表,但我找不到在 Kotlin 中执行此操作的方法。这不是什么大问题,但我喜欢优化我的代码。
// my Kotlin function
// setting a specific state
private fun setState(num: Int) {
Log.v(TAG, num.toString())
// get the correct image id
val imageId: Int? = when (num) {
0 -> R.drawable.lemon_restart
1 -> R.drawable.lemon_tree
2 -> R.drawable.lemon_squeeze
3 -> R.drawable.lemon_drink
else -> null
}
// get the correct text to show
val txtId: Int? = when (num) {
0 -> R.string.txt_state_0
1 -> R.string.txt_state_1
2 -> R.string.txt_state_2
3 -> R.string.txt_state_3
else -> null
}
// get the correct content description for accessibility
val contentDescriptionId: Int? = when (num) {
0 -> R.string.lemon_restart_description
1 -> R.string.lemon_tree_description
2 -> R.string.lemon_squeeze_description
3 -> R.string.lemon_drink_description
else -> null
}
// setting the new stuff
val imView: ImageView = findViewById(R.id.imageState)
val txtView: TextView = findViewById(R.id.textOrder)
txtView.text = getString(txtId!!)
imView.setImageResource(imageId!!)
imView.contentDescription = getString(contentDescriptionId!!)
}
尽量优化
【问题讨论】:
-
feel free to optimize it as much as possible你真的相信在一个函数中拥有所有这些就可以了吗?似乎这个函数只负责一件事而且只负责一件事,它做得太多了
标签: android kotlin variables optimization keyword