我有两个变量,并希望同时为两个变量分配相同的值,如下所示:
var allGood: Boolean = false
val deviceId: String = "3550200583"
var isValidId: Boolean = false
allGood = isValidId = deviceId.length > 0 && deviceId.length <= 16
有什么办法可以做到这一点?
最佳答案
由于分配不是Kotlin中的表达式,因此您不能以这种方式进行多次分配。但是还有其他方法。最明显的是:
isValidId = deviceId.length > 0 && deviceId.length <= 16
allGood = isValidId
一种更惯用的(如果更长的话)方式是:
(deviceId.length > 0 && deviceId.length <= 16).let {
allGood = it
isValidId = it
}
(顺便说一句,您可以将条件简化为
deviceId.length in 1..16
。)为什么Kotlin不允许这样做有两个原因。主要的is与调用具有命名参数的函数的语法不兼容:
fn(paramName = value)
。但这也避免了=
和==
之间的混淆(否则可能会导致难以发现的错误)。另请参见here。关于kotlin - 如何在Kotlin中将相同的值分配给多个变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56372208/