क्या अस्थायी चर का उपयोग किए बिना एक नया कथन शुरू किए बिना टुपल के कई मानों में हेरफेर करने का कोई तरीका है?मैनिपुलेटिंग टुपल्स
कहें कि मेरे पास एक तरीका है जो एक ट्यूपल देता है और मैं इन मानों के साथ कुछ करना चाहता हूं।
उदा। अगर मैं एक निश्चित बिंदु पर एक स्ट्रिंग विभाजित है और टुकड़े
def backToFront(s: String, n:Int) = s.splitAt(n)...
रिवर्स करना चाहते मैं
val (a, b) = s.splitAt(n)
b + a
या
List(s.splitAt(n)).map(i => i._2 + i._1).head
(काम करता है (अस्थायी चर और नए बयान की आवश्यकता है) कर सकते हैं , लेकिन थोड़ा गंदे लगता है, केवल इसके लिए एक तत्व सूची बना रहा है) या
s.splitAt(n).swap.productIterator.mkString
(इस विशेष उदाहरण के लिए काम करता है, लेकिन केवल इसलिए कि swap
विधि होती है जो मैं चाहता हूं, इसलिए यह बहुत सामान्य नहीं है)।
zipped
टुपल्स पर विधि सूचियों के tuples के लिए लगता है।
एक और उदाहरण के रूप में, आप एक बयान में ('a, 'b, 'c)
को ('b, 'a, 'c)
में कैसे बदल सकते हैं?
पैटर्न मिलान अच्छा है! 's.splitAt (n) मिलान {केस (ए, बी) => बी + ए}' पहले भाग के लिए काम करता है –
यह एक दयालुता है कि मानक पुस्तकालय में 'fold' विधि नहीं है; तो आप बस 's.splitAt (n) .fold ((ए, बी) => बी + ए)', और यह भी अधिक कुशल हो सकता है। (हाँ, निश्चित रूप से मैंने अपना खुद का बना दिया है।) –
मोड़ इसके लिए एक अच्छा नाम है। मैंने अपना जवाब अपडेट किया। –