我正在使用Scala 2.10.2,并且有两个具有相同字段的case类:
case class Foo(id: String, name: String)
case class Bar(id: String, name: String)
我想做这样的事情:
case class Thing(id: String, name: String)
type Foo = Thing
type Bar = Thing
这可以编译,但是当我尝试创建
Foo
时,我得到:scala> Bar("a", "b")
<console>:8: error: not found: value Bar
Bar("a", "b")
^
类型别名不适用于案例类吗?
最佳答案
创建案例类时,Scala会自动为其创建一个伴随对象。在您的代码中,您为Thing
类型定义了别名,即仅为Thing
类定义了别名。您的伴侣对象Thing
仍然只有1个名称,没有别名。
一种“修复”方法是创建对伴随对象(不是类型别名)的引用,如下所示:
scala> val Bar = Thing
Bar: Thing.type = Thing
scala> Bar("a", "b")
res1: Thing = Thing(a,b)
“修复”的另一种方法是使用
import package.{Thing => Bar}
重命名导入的对象。
关于scala - 在Scala 2.10中键入对案例类的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831497/