when (a) {
true -> b
else -> c // or false -> c
}
как вы видите: if
/ else
легче понять в этом конкретном случае.
Если a
не будет просто логическим значением, when
может сделать большесмысл, например:
when (a) {
is Scalable -> TODO("scale it")
else -> TODO("whatever makes sense")
}
Новые или другие условия могут быть легко добавлены ... но это не имеет особого смысла для простых булевых вычислений.
Когда вы добавили комментарий оудобочитаемость, а в вашем примере показано только задание, может быть, вам будет удобнее прочитать следующее:
val c = if (x) "a"
else "b"
или если вы хотите смоделировать нечто похожее на троичный оператор:
val c = x.takeIf { it }?.let { "a" }
?: "b"
IНадеюсь, однако, что вы получите точку ... если у вас есть boolean
, используйте if
/ else
.Но если ваше состояние более сложное, может пригодиться что-то вроде takeIf
... (мне очень жаль, что я использовал x.takeIf { it }
здесь ... но это скорее демонстрация того, что возможно).