我试图在Scala中对字节做一些按位运算符,我得到了一些奇怪的编译错误:
scala> var a: Byte = 5 | 3
a: Byte = 7
scala> a |= 7
<console>:9: error: type mismatch;
found : Int
required: Byte
a |= 7
^
scala> a |= 7.toByte
<console>:9: error: type mismatch;
found : Int
required: Byte
a |= 7.toByte
^
所以基本上我正在尝试创建一个var a: Byte = <something>
,然后在执行按位运算符并且等于这个可重新分配的Byte它不起作用时,我已经报告它是一个错误但是我错过了什么?有什么理由不起作用吗?
答案 0 :(得分:5)
这是因为|
的重载是:
def |(x: Byte): Int
def |(x: Char): Int
def |(x: Int): Int
def |(x: Long): Long
def |(x: Short): Int
正如您所看到的,|
返回Int
或Long
,但没有Byte
,而您的a
变量的类型为Byte
。因此,它是无法分配的。