"r0", "r1", etc. are of particular importance in Scala?

I get a compilation error if I call some case objects "r0", "r1" and so on. If I use different names, the code compiles and executes as expected. Rational for this would be very welcome!

code:

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)) } } 

the package "qndTests2" contains only one Test.scala file, and the full contents of the file are indicated above. Replace "r0" ~ "r3" with "A" ~ "D" and it will compile! I am not the reason why ... I am just very tired without noticing anything obvious ???

+4
source share
1 answer

This is not about r0 ~ r3, it is about lower and upper case. See this previous question .

Your call whether this is an error or a feature is a language specification , but it is there, section 8.1.1:

The x variable is a simple identifier that starts with a lowercase letter. This matches any value and binds the variable name to that value.

+11
source

Source: https://habr.com/ru/post/1380408/


All Articles