Kotlin:使用= when()返回值的函数

Hfr*_*rav 2 kotlin

我最近发现了一个仅根据输入返回值的函数的良好语法:

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

是否还可以使用范围或<>运算符?

我试过做类似的事情:

>0 -> "Positive"
Run Code Online (Sandbox Code Playgroud)

哪个不被接受,并且

0-10 -> "Postively small"
Run Code Online (Sandbox Code Playgroud)

我认为(自然地)被视为“ 0减去10”。

Ada*_*old 6

您可以执行其中一些操作,但不能以您描述的方式进行。例如,您可以使用isin并且==这样:

val x = 10

when (x) {
    in 0..10 -> 1
    10 -> 2
    is Int -> 3
    else -> 4
}
Run Code Online (Sandbox Code Playgroud)

但您不能使用比较(<>)。这样做的原因解释这里。您可以使用任意表达式,但<>不能超载,所以你不能这样做greaterThan(x)

如果您缺少Kotlin的某些功能,则可以随时打开KEEP,以便在某个时候实现它!