Tag: switch语句

如何引用when表达式的未命名的参数?

我有一个表达式如下所示: when(foo.toString()){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->foo.toString()[0]//problematic method call duplication } 现在,我不想调用foo.toString()两次,但我也希望这是一个单一的表达式。 有没有一种方便的方式来访问我传递给else表达式的值,比如在语言的其他地方找到的it或this@语法? 我目前正在使用以下解决方法: with(foo.toString()){ when(this){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->this[0] } } 但是这引入了另一个块,并且比我想要的更不可读。 有更好的解决方案吗?

打开一个字节

如何打开Byte值? 显而易见的方法是: fun foo(b: Byte): Boolean { return when(b) { 0 -> true else -> false } } 但在编译时失败 src/ByteSwitch.kt:3:5: error: incompatible types: kotlin.Int and kotlin.Byte 0 -> true ^ 有没有办法使0是一个字节文字?