Birbirine benzeyen bir sürü veri deposu tipi sınıfı var.Bağımlı yöntem türleri ve tür sınıfları
trait FooStore[C] {
def create(f: FooId => Foo)(c: C): Foo
// update and find methods
}
bir şeyleri basitleştirmek istiyorum ve
sealed trait AR {
type Id
type Type
}
sealed trait FooAR extends AR {
type Id = FooId
type Type = Foo
}
trait DataStore[C] {
def create(ar: AR)(f: ar.Id => ar.Type)(c: C): ar.Type
}
daha yakın bir şey almak için bağımlı yöntem türlerini kullanmak umuduyla ama denemek ve bunun bir örneğini oluştururken
case class InMemory(foos: List[Foo])
object InMemory {
lazy val InMemoryDataStore: DataStore[InMemory] = new DataStore[InMemory] {
def create(ar: AR)(f: ar.Id => ar.Type)(c: InMemory): ar.Type = sys.error("not implemented")
}
}
şöyle oldu
aşağıdaki derleme hatayı
object creation impossible, since method create in trait DataStore of type (ar: AR)(f: ar.Id => ar.Type)(c: InMemory)ar.Type is not defined
lazy val InMemoryDataStore: DataStore[InMemory] = new DataStore[InMemory] {
^
one error found
olsun
Bu yöntem, DataStore
örneğinde açıkça tanımlandığı için anlamıyorum. Hata ne anlama geliyor ve bu mümkün mü? Değilse, aynı şeyi başarmanın farklı bir yolu var mı?
Sadece kontrol ediliyorsunuz? -Yespendent-method-types 'ile mi çalışıyorsunuz? – mergeconflict
@mergeconflict: Evet, bağımlı yöntem türleri ile derleme – purefn