निम्नलिखित स्केला कोड को देखते हुए:स्कैला शॉर्ट और बाइट प्रकारों के लिए "+ =" ऑपरेटर को परिभाषित क्यों करता है?
var short: Short = 0
short += 1 // error: type mismatch
short += short // error: type mismatch
short += 1.toByte // error: type mismatch
मैं अंतर्निहित टाइपिंग पूछताछ नहीं है - यह स्पष्ट है कि "लघु + मूल्य == इंट" है।
मेरे प्रश्न हैं:
1. क्या ऑपरेटर का उपयोग किया जा सकता है?
2. यदि नहीं, तो क्यों ऑपरेटर कम & बाइट पर उपयोग के लिए उपलब्ध है?
[और विस्तार के द्वारा * =, | = & = आदि]
दरअसल, लघु विधि "+ =" या "* =" लघु http://www.scala-lang.org/api/current/index.html#scala के लिए दस्तावेज़, आप देख सकते हैं नहीं है। कम । x someoperator = y स्वचालित रूप से कंपाइलर द्वारा x = x someoperator y में अनुवाद कर रहे हैं। – Eastsun
@Eastsun लेकिन न करता इंट :-) 'एक सेशन = b' विस्तृत रूप के लिए वाक्यात्मक चीनी है:' एक = एक सेशन b', जो प्रकार की त्रुटि बताते हैं (लघु + लघु -> इंट)। यह समझा नहीं गया कि निर्णय क्यों बनाया गया था या इस निर्माण का क्या उपयोग हो सकता है - या शायद नहीं। (सी # में यह 'करने के लिए पूरी तरह से कानूनी है बाइट + = 1' नहीं बल्कि' बाइट = बाइट + 1', और व्यवहार मानक में विशिष्ट है - वहाँ एक अंतर्निहित डाली वापस एलएचएस प्रकार के सी # में है)। –
@pst हाँ, आप जावा में एक ही बात सी # में के रूप में (। अगर मैं सही ढंग से याद) – Eastsun