2012-02-27 21 views
15

स्ट्रेंज INTQueue कतार विस्तारित करने में क्या गड़बड़ है, यह पता नहीं लगा सकता है कि क्यों कोई त्रुटि है "कन्स्ट्रक्टर कतार के लिए पर्याप्त तर्क नहीं: (अग्रणी: Int) list.Lister.Queue [Int]। निर्दिष्ट मूल्य पैरामीटर अग्रणी" । मैं इसे कैसे निर्दिष्ट कर सकता हूं?स्कैला संकलन त्रुटि

class Queue[+T](
    private val leading: T 
) { 
    def enqueue[U >: T](x: U) = 
     new Queue[U](leading: U) // ... 
    } 

    class StrangeIntQueue(private val leading: Int) extends Queue[Int] { 
    override def enqueue(x: Int) = { 
     println(math.sqrt(x)) 
     super.enqueue(x) 
    } 
    } 

उत्तर

20
extends Queue[Int](leading) 

आप तर्क पर पारित करने के लिए भले ही ऐसा लगता है "स्पष्ट" क्या करना है।

ध्यान दें कि चूंकि आपने leading निजी घोषित किया है, तो आपको वास्तव में दो प्रतियां मिलेंगी: एक StrangeIntQueue और Queue के लिए एक। (अन्यथा आप केवल StrangeIntQueue(leading0: Int) extends Queue[Int](leading0) हो सकता था और अंदर leading की विरासत में मिला प्रतिलिपि का उपयोग करें।)

7

वर्ग Queue, जो StrangeIntQueue फैली के प्राथमिक निर्माता, एक पैरामीटर लेता है, लेकिन आप पैरामीटर के लिए यह कुछ भी गुजर नहीं कर रहे हैं। इसे आज़माएं:

class StrangeIntQueue(leading: Int) extends Queue[Int](leading) { 
    // ... 
} 
संबंधित मुद्दे