का समर्थन करता है, मैं एक ऐसी विशेषता बनाना चाहता हूं जो कक्षा में कुछ संपत्ति जोड़ती है और इसे श्रृंखला विधियों के लिए संभव बनाता है। स्कैला 2.8.1 में परीक्षण किया गया।स्काला विशेषता को कार्यान्वित करने का सर्वोत्तम अभ्यास जो विधि चेनिंग
trait SomeProperty {
var prop : String = "default"
def setProp(s: String) = {
prop = s
this
}
}
sealed abstract class Value
case class IntegerValue(v: Int) extends Value
case class FloatValue(v: Float) extends Value with SomeProperty {
def foo() = { println("I'm foo.") }
}
case object UnknownValue extends Value with SomeProperty {
def bar() = { println("I'm bar.") }
}
scala> val x = UnknownValue
scala> x.setProp("test").bar()
<console>:10: error: value bar is not a member of SomeProperty
x.setProp("test").bar()
इस तरह की स्थिति में सबसे आम प्रथा क्या है? (टाइप-सुरक्षित तरीका पसंदीदा है)
जो खोज रहे हैं यह बेहतर है। – lscoughlin
यह काम करता है! लेकिन मुझे समझ में नहीं आता क्यों। मुझे लगता है कि 'this.type'' कुछ प्रॉपर्टी 'के बराबर है, है ना? क्या यह स्कैला विशिष्ट है? या जावा में भी संभव है? – ihji
यह आलेख सहायक है। http://scalada.blogspot.com/2008/02/thistype-for-chaining-method-calls.html – ihji