scala - "+=" will reassign or not? -


निम्न कोड देखें:

  val नाम = सेट ("माइक", "जैक ") नाम + =" जेफ " 

एक त्रुटि होगी:

  त्रुटि: वैल के लिए पुन: असाइनमेंट  

मैं कुछ पुस्तकों में देखता हूं, यह कहा है कि + = वास्तव में एक विधि है, और कोड हो सकता है:

  val नाम = सेट ("माइक", "जैक ") नाम। + = (" जेफ ")  

यदि + = एक विधि है, तो यह" नाम "क्यों निर्दिष्ट करेगा?

< / Div>

scala.collection.mutable.Set है + = विधि तो वैल या var के बावजूद, आप केवल अंतर्निहित सेट पर एक विधि का उपयोग कर रहे हैं। लेकिन scala.collection.immutable.Set में कोई + = विधि नहीं है, लेकिन + विधि है। + = स्काला में विशेष अर्थ है; इसे इस तरह लागू किया जा सकता है, नाम = नाम + "जेफ" और चूंकि यह एक val 'names' के लिए पुन: असाइन किया गया है, कंपाइलर त्रुटि की रिपोर्ट कर रहा है।

उदाहरण (+ लागू किया जाता है और पुन: सौंप दिया जाता है + =) की जगह

  वर्ग टेस्ट (num: int) {def + (n: int) = नया टेस्ट (num + n); ओवरड्राइड def toString = num.toString} परिभाषित वर्ग test val foo = new test (5) foo: test = 5 foo + = 4 त्रुटि: वैल foo + = 4 ^ var bar = new test (5) बार: reassignment: test = 5 बार + = 4 बार रेस 12: टेस्ट = 9  

Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -