Kotlin: функция, использующая = when () для возврата значений - PullRequest
2 голосов
/ 04 июня 2019

Недавно я обнаружил этот приятный синтаксис для функции, которая возвращает значение только на основе ввода:

fun getItem(value: Int): String = when (getPosition(value)) {
   0 -> "Zero"
   1 -> "One"
   2 -> "Two"
   else -> "Other"
}

Можно ли использовать диапазоны или операторы <>?

Я пытался делать такие вещи, как:

>0 -> "Positive"

Что не принято, а

0-10 -> "Postively small"

(естественно) рассматривается как "0 минус 10", я думаю.

1 Ответ

6 голосов
/ 04 июня 2019

Вы можете сделать некоторые из этих вещей, но не так, как вы описали.Например, вы можете использовать is, in и == следующим образом:

val x = 10

when (x) {
    in 0..10 -> 1
    10 -> 2
    is Int -> 3
    else -> 4
}

, но вы не можете использовать сравнение (<, >).Причина этого объясняется здесь .Вы можете использовать произвольные выражения, но < и > не могут быть перегружены, поэтому вы не можете сделать greaterThan(x).

Если вам не хватает некоторых функций в Kotlin, вы всегда можете открыть ПРОДОЛЖАЙТЕ так что в какой-то момент это может быть реализовано!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...