scala – 为什么反引号构造函数参数中的空格会破坏编译器?

空格和排序的某种组合与参数名称中的反引号一起,其中反引号名称与另一个参数具有相同的前导字符似乎误导编译器产生编译错误:

声明

case class A(`abc def`: List[Int], abc: String)

导致

Compiling 7 Scala sources to ... [error] (test:compileIncremental) scala.reflect.internal.Types$TypeError: type mismatch; [error] found : List [error] required: String [error] Total time: 2 s, completed Feb 10, 2016 11:09:51 AM

这个问题似乎取决于参数的顺序和类型以及声明的类型,因为以下所有编译都很好:

case class A(abc: String, `abc def`: List[Int])
case class B(`abc def`: String, abc: String)
case class C(`bbc def`: List[Int], abc: String)
def x(`abc def`: List[Int], abc: String) = 42

这是一个错误还是以某种方式预期?

斯卡拉2.11.7

最佳答案 是的,这是一个已知的错误:
SI-8831 – Case classes exhibit bizarre, order-dependent behavior when members are backquoted

点赞