我有两个变量,并希望同时为两个变量分配相同的值,如下所示:

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/

10-13 04:39