मान लीजिए कि मैं स्कैला में टाइपक्लास पैटर्न का उपयोग कर रहा हूं।मैं टाइपटास पैटर्न को सबटाइपिंग के साथ कैसे जोड़ सकता हूं?
Welcome to Scala version 2.9.0.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26).
scala> trait Foo[T] { def foo(t: T) }
defined trait Foo
scala> def foo[T : Foo](t: T) { implicitly[Foo[T]].foo(t) }
foo: [T](t: T)(implicit evidence$1: Foo[T])Unit
scala> class C
defined class C
scala> foo(new C)
<console>:11: error: could not find implicit value for evidence parameter of type Foo[C]
foo(new C)
^
scala> implicit object FooC extends Foo[C] { override def foo(c: C) { println("it's a C!") } }
defined module FooC
scala> foo(new C)
it's a C!
अब तक तो अच्छा: यहाँ मैं कैसे typeclass फू के एक वर्ग सी हिस्सा बनाते हैं। लेकिन मैं सी के एक उपवर्ग डी है लगता है, और मैं typeclass "में" भी होने के लिए डी के उदाहरण हैं:
scala> class D extends C
defined class D
scala> foo(new D)
<console>:13: error: could not find implicit value for evidence parameter of type Foo[D]
foo(new D)
^
रवींद्र! डी के लिए एक टाइपक्लास उदाहरण स्पष्ट रूप से प्रदान किए बिना मैं यह काम कैसे करूं?
याद किया यह काफी http का डुप्लिकेट है: // stackoverflow। कॉम/प्रश्न/3869 991/टाइप-क्लास-पैटर्न-इन-स्कैला-डेंट-विचार-विरासत –