Условные ответвления выражения «когда» в КотлинеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Условные ответвления выражения «когда» в Котлине

Сообщение Anonymous »

Мне нужно написать функцию Kotlin, которая возвращает результат на основе результата оператора «когда». В качестве тривиального примера предположим, что мой код выглядит так:

Код: Выделить всё

fun combineThings(newThing:String, otherThing:String):String
{
val thing1 = "abc"
val thing2 = "def"
val thing3 = "ghi"

return when {
newThing.length == 2 -> thing1 + thing2
newThing.contains("qr") -> thing2 + thing3
newThing.contains("123") -> thing1 + thing3
newThing.length == 4 -> thing1 + thing2 + thing3
else -> otherThing
}
}
Достаточно просто. Проблема в том, что мне нужен способ добавить более сложную логику. Предположим, я хотел, чтобы некоторые ветки оценивались ТОЛЬКО тогда, когда какое-то другое условие истинно. Итак, возвращаясь к примеру, предположим, что я хочу добавить логику для оценки второй и третьей ветвей ТОЛЬКО, если otherThing == "foo". Если OtherThing != "foo", эти ветки пропускаются, а оператор if продолжает проверять остальные ветки.
В этом тривиальном примере я мог бы просто добавить оператор AND с дополнительным логика для каждой ветки. Однако в реальном приложении это займет много времени и может привести к ошибкам. Я ищу способ добавить условный блок вокруг ветвей, требующих дополнительной логики.
Есть ли способ сделать то, что я хочу, с помощью оператора «когда»? Если нет, есть ли другая альтернатива куче операторов if/else?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -in-kotlin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»