为什么反引号构造函数参数中的 space 会破坏编译器?
Why does space in backtick constructor params break the compiler?
参数名称中空格和顺序与反引号的某种组合,其中反引号名称与另一个参数具有相同的前导字符,这似乎会误导编译器产生编译错误:
宣言
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
这是错误还是意料之中?
Scala 2.11.7
参数名称中空格和顺序与反引号的某种组合,其中反引号名称与另一个参数具有相同的前导字符,这似乎会误导编译器产生编译错误:
宣言
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
这是错误还是意料之中?
Scala 2.11.7