我想在同一行中填充两个变量,但我不知道在Kotlin中最好的方法
var a:String? = null var b:String? = null a, b = "Text"
4ioopgfo1#
在Kotlin中是不可能的(除非你已经准备好求助于一些人为的重复构造,如其他答案和注解中所描述的)。
a = b = "Text"
因为奇怪的是,赋值在Kotlin中是而不是表达式(与几乎所有其他的表达式相反,如if、return、throw、swicth等,它们在Kotlin中是 * 表达式,但在Java中不是)。所以,如果你想赋值完全相同的值而不重复(赋值),你必须写
if
return
throw
swicth
a = "Text" b = a
请注意,还有一个also函数(双关语),因此从技术上讲,如果您确实希望只使用一行,可以编写以下代码
also
a = "Text".also { b = it }
但我怀疑是否值得。
dphi5xsq2#
var a: String? = null; var b: String? = null
或
var (a: String?, b: String?) = null to null
但请不要这样做
ewm0tg9j3#
只需创建一个内联数组,迭代并赋值。
arrayListOf(a, b, c, d).forEach { it = "Text" }
3条答案
按热度按时间4ioopgfo1#
在Kotlin中是不可能的(除非你已经准备好求助于一些人为的重复构造,如其他答案和注解中所描述的)。
因为奇怪的是,赋值在Kotlin中是而不是表达式(与几乎所有其他的表达式相反,如
if
、return
、throw
、swicth
等,它们在Kotlin中是 * 表达式,但在Java中不是)。所以,如果你想赋值完全相同的值而不重复(赋值),你必须写
请注意,还有一个
also
函数(双关语),因此从技术上讲,如果您确实希望只使用一行,可以编写以下代码但我怀疑是否值得。
dphi5xsq2#
或
但请不要这样做
ewm0tg9j3#
只需创建一个内联数组,迭代并赋值。