आप यहाँ के माध्यम से पढ़ सकते हैं:
http://ofps.oreilly.com/titles/9780596155957/AdvancedObjectOrientedProgramming.html#EqualityOfObjects
लेकिन ऐसा लगता है कि अगर आप ने क्या किया: filesHere.sameElements(filesHere2)
कि यह सच होना चाहिए।
इस के लिए जावाडोक यहाँ है: http://www.scala-lang.org/api/2.6.0/scala/IterableProxy.html#sameElements%28Iterable%5BB%5D%29
अद्यतन:
पहले लिंक है कि सहायक हो सकता है के स्निपेट के एक जोड़े:
जावा, C++ में, और सी # संदर्भ के लिए == ऑपरेटर परीक्षण, मूल्य समानता नहीं है। इसके विपरीत, रूबी का == ऑपरेटर मूल्य समानता के लिए परीक्षण करता है। आप जिस भी भाषा का उपयोग कर रहे हैं, उसे याद रखना सुनिश्चित करें कि स्कैला में, == मूल्य समानता के लिए परीक्षण कर रहा है।
==
काम नहीं कर के संदर्भ में सूचियाँ पर अपेक्षा के अनुरूप:
इस विसंगति की तरह लग सकता है, दो परिवर्तनशील डेटा संरचनाओं की समानता के एक स्पष्ट परीक्षण को प्रोत्साहित करने की ओर से एक रूढ़िवादी दृष्टिकोण है भाषा डिजाइनर। लंबे समय तक, यह आपको अपने सशर्त परिणामों में अप्रत्याशित परिणामों से बचा लेना चाहिए।
अद्यतन 2:
राफेल से मैं विनिर्देश को देखा, और यह दो दिन पहले हाल ही में अद्यतन के लिए दिनांकित किया गया था, और मैं http://www.scala-lang.org/files/archive/nightly/pdfs/ScalaReference.pdf में इन देख टिप्पणियों के आधार पर:
Method equals: (Any)Boolean is structural equality, where two instances
are equal if they both belong to the case class in question and they have equal
(with respect to equals) constructor arguments.
class AnyRef extends Any {
def equals(that: Any): Boolean = this eq that
final def eq(that: AnyRef): Boolean = . . . // reference equality
तो, ऐसा प्रतीत होता है कि स्केल 2.10.2 में परिभाषा नहीं बदली है, क्योंकि विनिर्देश सुसंगत प्रतीत होता है। यदि व्यवहार अलग है, तो यदि आप एक इकाई परीक्षण लिखते हैं तो इसे स्कैला के लिए एक बग के रूप में भेजा जाना चाहिए।
अच्छा संसाधन, धन्यवाद! यह दिखाता है कि ऊपर उल्लिखित समस्या से निपटने के लिए कैसे (समान एलिमेंट्स का उपयोग करके, ठीक है!) लेकिन यह समझा नहीं जाता है कि समस्या (या "आश्चर्य") स्कैला> ऐरे (1, 2) == ऐरे (1) में क्यों होती है , 2) res0: बूलियन = झूठी – acherm
@acherm - यही कारण है कि मैंने अद्यतन में डाल दिया, लेख के अंतिम उद्धरण को समानता के लिए स्पष्ट परीक्षण को प्रोत्साहित करने के लिए क्यों समझा जाना चाहिए। –
यहां एक और दिलचस्प चर्चा: http://scalide.blogspot.com/2009/05/hashcode-equals-in-scala-28-collections.html यह स्थिति को पूरी तरह से स्पष्ट नहीं करता है, लेकिन यह दर्शाता है कि "समानता एक है दिलचस्प विषय, केवल व्याख्याओं की अविश्वसनीय सीमा के कारण इसमें हैं। " Array.scala (http://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_8_0_final/src//library/scala/Array.scala) पर देखकर, बराबर() विधि परिभाषित नहीं है । – acherm