参数
名称中的空格和排序以及反引号的某种组合,其中反引号名称与另一个参数具有相同的前导字符,似乎误导编译器产生编译错误:
宣言
case class A(`abc def`: List[Int], abc: String)
导致
[info] 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 - 案例类在成员被反引时表现出奇怪的、依赖于顺序的行为