のタイプであるジェネリックとの形質を拡張します。 だから私はこの書き込み:Scalaのクラスは、私はこのようなコードを書きたいフィールド
class C[BI0] private (val b: B) extends A[BI0]
object C {
def apply(b: B): C[b.BI] = new C(b)
}
をしかし、それは醜いです。より良い実装がありますか?
なぜこの質問がありますか?私は例を思いつく:
trait Store[Goods] {
def sell(goods: Goods): Unit
}
class CarFactory {
def make(): Car = new Car
class Car
}
class CarStore(val factory: CarFactory) extends Store[factory.Car]{//can't compile
def sell(car: factory.Car): Unit = {}
}
私はこの車店のみ工場factory
の車を売るためCarFactory#Car
を使用する必要はありません。
「BI0」とは何ですか?具体的なタイプですか? –
@YuvalItzchakov「C2」の型パラメータの名前だと思います... –
私は 'BI0'を' b.BI'型にします。 –