字节上的Scala按位运算符

Joh*_*n S 0 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
                ^
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在尝试创建一个var a: Byte = <something>,然后在执行按位运算符并且等于这个可重新分配的字节时它不起作用,我已将它报告为一个错误,但我错过了什么?有什么理由不起作用吗?

Ion*_*tan 5

这是因为重载|是这些:

def |(x: Byte): Int
def |(x: Char): Int
def |(x: Int): Int
def |(x: Long): Long
def |(x: Short): Int
Run Code Online (Sandbox Code Playgroud)

如您所见,当您的变量具有类型时,|返回IntLong,但不是.因此,它是无法分配的.ByteaByte