कोई फर्क नहीं पड़ता, हालांकि यह भी एक बग नहीं है। इस मामले में:
"1" + 1
आप स्ट्रिंग में कुछ भी जोड़ने के लिए जावा की अंतर्निहित सुविधा का उपयोग कर रहे हैं। सब के बाद, कई लोगों को निम्नलिखित "मुहावरा" का उपयोग करने के लिए तार संख्या बदलती है:
String s = "" + 5;
यह रूप में अच्छी तरह स्काला में काम करता है और java.lang.String
के साथ परिणाम - जावा में के रूप में ही।
दूसरी ओर:
1 + "1"
में थोड़ा और अधिक जटिल है। इस में अनुवाद किया जाता है:
1.+("1")
और +()
विधि Int.+
विधि Int.scala
में स्थित से लिया जाता है:
final class Int extends AnyVal {
//....
def +(x: String): String = sys.error("stub")
String
इस संदर्भ में Predef.scala
में परिभाषित किया गया है:
type String = java.lang.String
जो प्रकार का स्रोत है "अंतर "। जैसा कि आप देख सकते हैं कि दोनों तार वास्तव में एक ही प्रकार के हैं।
स्रोत
2012-01-30 14:54:31
इसी प्रकार का प्रश्न: http://stackoverflow.com/questions/6559938/scala-string-vs-java-lang-string-type-inference –
स्कैला 2.10 में दोनों 'स्ट्रिंग' लौटाएं। – soc