मेरे पास एक नेस्टेड ट्यूपल संरचना है जैसे (String,(String,Double))
और मैं इसे (String,String,Double)
में बदलना चाहता हूं। मेरे पास विभिन्न प्रकार के नेस्टेड टुपल हैं, और मैं मैन्युअल रूप से प्रत्येक को बदलना नहीं चाहता हूं। क्या ऐसा करने का कोई सुविधाजनक तरीका है?एक नेस्टेड ट्यूपल कैसे फ़्लैट करें?
16
A
उत्तर
21
6
टुपल पर कोई फ्लेटन नहीं है। लेकिन अगर आप संरचना को जानते हैं, तो आप ऐसा कुछ कर सकते हैं:
implicit def flatten1[A, B, C](t: ((A, B), C)): (A, B, C) = (t._1._1, t._1._2, t._2)
implicit def flatten2[A, B, C](t: (A, (B, C))): (A, B, C) = (t._1, t._2._1, t._2._2)
यह किसी भी प्रकार के साथ टुपल को फटकार देगा। आप परिभाषा में अंतर्निहित कीवर्ड भी जोड़ सकते हैं। यह केवल तीन तत्वों के लिए काम करता है।
(1, ("hello", 42.0)) => (1, "hello", 42.0)
(("test", 3.7f), "hi") => ("test", 3.7f, "hi")
एकाधिक नेस्टेड Tupple, भूमि पर समतल नहीं किया जा सकता क्योंकि वहाँ वापसी प्रकार में केवल तीन तत्व हैं::
((1, (2, 3)),4) => (1, (2, 3), 4)