如果我命名一些案例對象「r0」,「r1」等,我會得到一個編譯錯誤。 如果我使用不同的名稱,代碼將按預期進行編譯和運行。 理性的將是非常值得歡迎的!確實「r0」,「r1」等在Scala中有特殊含義嗎?
的代碼:
package qndTests2
sealed abstract case class Reg()
trait RReg
trait RRegNotPc extends RReg
trait LowReg extends RReg
sealed abstract case class LowRegClass() extends Reg with LowReg
sealed abstract case class RRegNotPcClass() extends Reg with RRegNotPc
case object R0 extends LowRegClass
case object R1 extends LowRegClass
case object R2 extends RRegNotPcClass
case object R3 extends Reg with RReg
sealed abstract case class Base()
trait T1
trait T2 extends T1
trait T3 extends T1
sealed abstract case class CaseClassT3() extends Base with T3
sealed abstract case class CaseClassT2() extends Base with T2
case object r0 extends CaseClassT3
case object r1 extends CaseClassT3
case object r2 extends CaseClassT2
case object r3 extends Base with T1
object test {
def regToInt(r: RReg): Int = {
r match{
case R0 => 0
case R1 => 1
case R2 => 2
case R3 => 3
}
}
def toInt(r: T1): Int = {
r match{
case r0 => 0
case r1 => 1 //error: unreachable code
case r2 => 2 //error: unreachable code
case r3 => 3 //error: unreachable code
}
}
def main(args: Array[String]): Unit = {
println(toInt(r0))
println(toInt(r1))
println(regToInt(R0))
println(regToInt(R3))
}
}
包「qndTests2」只包含一個文件,Test.scala,和該文件的全部內容以上。 將「r0」〜「r3」替換爲「A」〜「D」,編譯! 我不會爲什麼... 我只是很累,俯瞰明顯的東西?
爲了使其正常工作,您必須在反引號中使用小寫字母標識符,例如'r1'。 ''case'r1' => ...'' – Madoc