1

私はクラスの家族を持っています

class FooId extends Identifier {
  val prefix = "foo"
}
class BarId extends Identifier {
  val prefix = "bar"
}

whereprefixは常に「静的」な値です。(実際、現時点では、値はコンパニオン クラスで繰り返されます。)

これらを抽象化して、あらゆるタイプの識別子を簡単にシリアライズおよびデシリアライズできるようにしたいと思います。次のような関数を書きたいと思います。

val idFromString: PartialFunction[String, T <: Identifier] = {
  case s if s.startsWith(<T.prefix>) =>
      new T(Integer.parseInt(s.drop(<T.prefix>.length)))
}

しかし、の代わりに何を入れるべきかわかりません<T.prefix>

4

1 に答える 1

0

def prefix : String識別子にメソッドを追加する必要がありますTrait

したがって、メソッドはサブクラスの val によってオーバーライドされます。

于 2013-11-06T08:21:31.003 に答える