Поскольку назначение не является выражением в 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
.)
Есть несколько причин, по которым Котлин не позволяет этого.Основным является , что несовместимо с синтаксисом вызова функции с именованными параметрами: fn(paramName = value)
.Но это также позволяет избежать путаницы между =
и ==
(что в противном случае может привести к появлению трудно обнаруживаемых ошибок).Смотри также здесь .