【发布时间】:2017-09-21 22:37:43
【问题描述】:
目前我有以下代码:
case class Foo(text: String, tag: Tag) {...}
object Foo {
def doSomething(fooSeq: Seq[Foo]) = fooSeq.map(f => f.tag)
def doSomethingElse() = {...}
}
我想将doSomething 方法移动到一个抽象类/特征中,这样我就可以对标签进行参数化并在以后重用代码。理想情况下,我想做这样的事情:
case class Foo(text: String, tag: Tag) {...}
object Foo extends TraitFoo[Tag] {
def doSomethingElse() = {...}
}
---------------in another file----------------
trait TraitFoo[T] = {
def doSomething(fooSeq: Seq[TraitFoo[T]]) = fooSeq.map(f => f.tag)
}
但是,编译器抱怨它无法识别f.tag 内的TraitFoo。
我考虑过使用抽象类,但这也会导致问题,因为我的对象 Foo 不需要构造函数。它只需要访问其伴生类中的字段。
【问题讨论】:
标签: scala abstract-class traits