打开一个字节
如何打开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
是一个字节文字?
你不能在Kotlin中指定字节字面值( 你也不能在Java中 )。 从文字常量 – 基本类型 – Kotlin编程语言
对于整数值有以下几种常量:
- 小数:
123
123L
标有大写L
:123L
- 十六进制:
0x0F
- 二进制文件:
0b00001011
但是,您可以声明编译器时间常量,以避免在运行时将Int
转换为Byte
:
const val ZERO_BYTE: Byte = 0 fun foo(b: Byte): Boolean { return when (b) { ZERO_BYTE -> true else -> false } }
由于Kotlin允许分支条件是任意表达式(不一定是常量),所以一种方法是接受0
将是一个Int
,并将其明确地转换为一个Byte
:
fun foo(b: Byte): Boolean { return when(b) { 0.toByte() -> true else -> false } }
每Ilya ,“ 0.toByte()
在编译时评估,所以在运行时没有转换成本。”