Как присвоить одно и то же значение нескольким переменным в Kotlin - PullRequest
1 голос
/ 30 мая 2019

У меня есть две переменные, и я хочу присвоить обеим переменным одно и то же значение одновременно, как показано ниже:

var allGood: Boolean = false
val deviceId: String = "3550200583"
var isValidId: Boolean = false
allGood = isValidId = deviceId.length > 0 && deviceId.length <= 16

есть ли способ добиться этого?

Ответы [ 2 ]

4 голосов
/ 30 мая 2019

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

0 голосов
/ 30 мая 2019

Другой способ сделать это так:

val deviceId: String = "3550200583";
val condition = deviceId.length > 0 && deviceId.length <= 16
var (allGood, isValidId) = arrayOf(condition, condition);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...