आरईपीएल पर कुछ सामान के साथ प्रयोग करते हैं, मैं एक बात करने के लिए मिल गया है, जहां मैं कुछ इस तरह की जरूरत: एक "==" ऑपरेटर के साथसरल स्कैला वाक्यविन्यास - "==" ऑपरेटर को परिभाषित करने की कोशिश कर रहा है - मुझे क्या याद आ रही है?
scala> class A(x:Int) { println(x); def ==(a:A) : Boolean = { this.x == a.x; } }
बस एक साधारण क्लास।
यह क्यों काम नहीं करता ???
:10: error: type mismatch; found : A required: ?{val x: ?} Note that implicit conversions are not applicable because they are ambiguous: both method any2ArrowAssoc in object Predef of type [A](x: A)ArrowAssoc[A] and method any2Ensuring in object Predef of type [A](x: A)Ensuring[A] are possible conversion functions from A to ?{val x: ?} class A(x:Int) { println(x); def ==(a:A) : Boolean = { this.x == a.x; } } ^
यह स्केला 2.8 RC1 है:
यहाँ परिणाम है।
धन्यवाद
मुझे लगता है कि यह कहने के लिए और अधिक सटीक है कि यह एक क्षेत्र के रूप में * सुलभ * नहीं है यानी यह एक्सेसर विधियों को उत्पन्न नहीं करता है जब तक कि आप इसे 'वैल' के रूप में घोषित नहीं करते हैं। –
एमएम हम्म। एलेक्स अन्य कारणों से 'वैल' जोड़ना चाह सकता है, लेकिन कोई व्यक्ति आपके उत्तर को यह बता सकता है कि 'बराबर' के शरीर में 'x' तक पहुंचने के लिए इसकी आवश्यकता है। –
मैंने यह स्पष्ट करने के लिए अपना उत्तर संपादित कर दिया है कि आपको 'बराबर' के शरीर में 'a.x' तक पहुंचने के लिए 'val' की आवश्यकता है। –