विस्तारित करना मुझे एक सीलबंद विशेषता है जिसमें एक घोषित विधि है जो वास्तविक वर्ग को प्राप्त करती है जो विशेषता को बढ़ाती है। क्या मुझे एक अमूर्त प्रकार, पैरामीटर प्रकार या का उपयोग करना चाहिए, इसे हल करने का कोई और अच्छा तरीका है?एक विशेषता और प्रकार
sealed trait Foo {
type T
def doit(other: T): T
}
या
sealed trait Foo[T] {
def doit(other: T): T
}
ध्यान दें कि T
इस उदाहरण में Foo
की एक उप-प्रकार होना चाहिए। अगर मैं इस तरह यह करने के प्रकार जानकारी भी दोहराया महसूस करता है:
case class Bar(name: String) extends Foo[Bar] {
def doit(other: Bar): Bar = ...
}
परिचित लग रहा है। क्या आप शायद इसका उदाहरण दे सकते हैं? – chrsan
अगर मैं एक ही प्रकार का एक नया उदाहरण वापस करना चाहता हूं तो यह काम नहीं कर रहा है? – chrsan
हां - 'this.type' पथ-निर्भर है: यह केवल वर्तमान उदाहरण –