2011-10-16 16 views
8

निम्नलिखित पर विचार करें:स्कैला 2.8 बूलेन और java.lang.Boolean ठीक से संभालती है?

scala> val a:java.lang.Boolean = true 
a: java.lang.Boolean = true 

scala> val b = true 
b: Boolean = true 

scala> a == b 
res4: Boolean = true 

scala> b == a 
<console>:8: warning: comparing values of types Boolean 
and java.lang.Boolean using `==' will always yield false 
     b == a 
     ^
res5: Boolean = true 

चेतावनी कहना है कि यह false निकलेगा लेकिन यह true अर्जित करता है।

स्कैला 2.8।

+0

शायद आपकी मदद नहीं करेगा लेकिन स्कैला 2.9.1 अपेक्षित व्यवहार करता है। (कोई चेतावनी नहीं) – Fabian

+0

लॉल्स के लिए +1। 2.9.0 में भी तय किया गया है। मुझे लगता है कि आप इस चेतावनी को अनदेखा कर सकते हैं। –

उत्तर

3

स्रोत कोड नियंत्रण पुरातत्व का एक बिट दिखाता है कि 2.8.1 के बाद उन चेतावनियों को संभालने में सुधार हुआ था। उन चेतावनियों के लिए यूनिट परीक्षणों में एनोटेटेड संशोधन यहां दिए गए हैं।

https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/neg/checksensible.scala?annotate=blame&rev=25638

यह है कि है 2.8.1 फाइनल में 19169 फिरना करने के लिए तुलना में है एक बहुत अधिक बुनियादी:

https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_8_1_final/test/files/neg/checksensible.scala

मैं इस भावना देता है कि और अधिक ध्यान के बाद यह करने के लिए प्रदान किया गया लगता है 2.8.1।

कुछ बग रिपोर्ट देखकर, ऐसा लगता है कि चेतावनी वास्तव में केवल यही है - उम्मीद है कि त्रुटियों की पहचान करने में मदद करें। यदि आप जानते हैं कि आप क्या कर रहे हैं (जैसे जावा बूलियन और स्कैला बूलियन की तुलना करना), तो आप अनदेखा कर सकते हैं।

1

दिलचस्प बात यह है कि यह वापस आ गया है। हालिया चेतावनी में वृद्धि में मुझे संख्याओं और गायब बुलियन को छोड़ना होगा। Java.lang.Boolean और बूलियन की तुलना करने के लिए ट्रंक में त्रुटि संदेश प्रभावशाली रूप से भ्रमित है।

+0

ओह, इसका मतलब है कि huynhjl के उत्तर पर टिप्पणी के रूप में। – extempore

संबंधित मुद्दे