字节上的Scala按位运算符

时间:2014-07-16 12:08:14

标签: scala bitwise-operators

我试图在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它不起作用时,我已经报告它是一个错误但是我错过了什么?有什么理由不起作用吗?

1 个答案:

答案 0 :(得分:5)

这是因为|的重载是:

def |(x: Byte): Int
def |(x: Char): Int
def |(x: Int): Int
def |(x: Long): Long
def |(x: Short): Int

正如您所看到的,|返回IntLong,但没有Byte,而您的a变量的类型为Byte 。因此,它是无法分配的。