मैं डेटा स्टोर प्रकार वर्गों है कि सभी एक ही लग रही का एक समूह मिल गया है।निर्भर विधि प्रकार और प्रकार वर्गों
trait FooStore[C] {
def create(f: FooId => Foo)(c: C): Foo
// update and find methods
}
मैं चीजों को आसान बनाने के लिए करना चाहते हैं और आश्रित विधि प्रकार का उपयोग करने
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
}
के करीब कुछ पाने की उम्मीद कर रहा था लेकिन जब मैं कोशिश करते हैं और इस बात का एक उदाहरण बनाने के रूप में इस
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")
}
}
मैं निम्नलिखित संकलन त्रुटि
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
प्राप्त
मुझे समझ में नहीं आता है क्योंकि उस विधि को DataStore
उदाहरण पर स्पष्ट रूप से परिभाषित किया गया है। त्रुटि का क्या अर्थ है और क्या यह संभव है? यदि नहीं, तो क्या एक ही चीज़ को पूरा करने का कोई अलग तरीका है?
सिर्फ जाँच ... आप '-Ydependent-विधि-types' साथ संकलन कर रहे हैं? – mergeconflict
@mergeconflict: हाँ, निर्भर विधि प्रकार – purefn