2011-07-10 10 views
10

संभव डुप्लिकेट:
Tuple parameter declaration and assignment oddityगमागमन दो वार्स

अजगर में मैं क्या कर सकते हैं

>>> (a,b) = (1,2) 
>>> (b,a) = (a,b) 
>>> (a,b) 
(2, 1) 

लेकिन स्केला में:

Welcome to Scala version 2.8.1.final (OpenJDK Server VM, Java 1.6.0_20). 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> var (a,b) = (1,2) 
a: Int = 1 
b: Int = 2 

scala> (a,b)=(b,a) 
<console>:1: error: ';' expected but '=' found. 
     (a,b)=(b,a) 
      ^

तो जब मैं एक टुपल के रूप में वर्र्स शुरू कर सकता हूं, तो मैं उन्हें एक टुपल के रूप में असाइन नहीं कर सकता। एक tmp var का उपयोग करने के अलावा, इसके आसपास पाने के लिए कोई तरीका?

+0

संभावित डुप्लिकेट? http://stackoverflow.com/questions/1624484/tuple-parameter-declaration-and-assignment-oddity http://stackoverflow.com/questions/6196678/is-it-possible-to-have-tuple-assignment-to -वारी-इन-स्कैला –

उत्तर

6

दुर्भाग्य से, कोई आसान तरीका नहीं है। अभिव्यक्ति (a,b)Tuple[Int, Int] प्रकार की एक अपरिवर्तनीय वस्तु बनाती है। इस tuple के भीतर, a और b की पहचान mutable var एस खो गए हैं। पिछले दो सवालों के एक छोटे से अधिक जानकारी दे सकते हैं:

Tuple parameter declaration and assignment oddity

Is it possible to have tuple assignment to variables in Scala?

12

यह स्काला 2.9.0.1

scala> val pair = (1,2) 
pair: (Int,Int) = (1,2) 

scala> val swappedPair = pair.swap 
swappedPair: (Int,Int) = (2,1) 

विधि swap एक और टपल का उत्पादन करने के बजाय पुराने बदल रहा है और है मुझे नहीं पता कि यह स्कैला 2.8.1 में रहा है या नहीं।

+2

हां, यह 2.8 में है, लेकिन यह केवल एक स्वैप टुपल देता है। तो युद्धों की आईडी को स्वैप करने की समस्या हल नहीं होती है। – georg

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

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