मैं वर्तमान में स्काला सीख रहा हूँ, और इस हास्केल बीजीय डेटा प्रकार को दोहराने के लिए चाहता था:क्या एक प्रकार पैरामीटर के साथ 'केस ऑब्जेक्ट' का उपयोग करना संभव है?
sealed trait Tree[T]
case class Empty[T]() extends Tree[T]
case class Leaf[T](value: T) extends Tree[T]
case class Node[T](left: Tree[T], right: Tree[T]) extends Tree[T]
हालांकि, किसी ने मुझे कि मुझे बताया गया है:
data Tree = Empty
| Leaf Int
| Node Tree Tree
यह है कि मैं क्या स्काला में लेकर आए हैं Empty
के लिए case object
का उपयोग करना चाहिए, जो मुझे लगता है कि यह सच है क्योंकि यह पैरामीटर नहीं लेता है - लेकिन फिर इसे एक प्रकार पैरामीटर की आवश्यकता होती है।
मैंने कोशिश की निम्नलिखित लेकिन उनमें से कोई संकलन:
case object Empty[T] extends Tree[T]
case object Empty extends Tree[T]
case object Empty extends Tree
इसलिए मैं अगर वहाँ एक तरह से इस उदाहरण में है या नहीं case object
उपयोग करने के लिए सोच रहा हूँ।
एक सिंगलटन में टाइप पैरामीटर नहीं हो सकता है। शायद आप 'केस ऑब्जेक्ट चाहते हैं खाली खाली पेड़ [कुछ भी नहीं] ' –
' केस ऑब्जेक्ट खाली पेड़ [कुछ भी नहीं] 'बढ़ाता है, क्योंकि' कुछ भी नहीं 'हर दूसरे प्रकार का उप-प्रकार है। –
व्याख्यात्मक टिप्पणियों के लिए धन्यवाद! –