मान लें हम अलग अलग आकार के निम्न सूची है:पिन डिफ़ॉल्ट तत्व के साथ अलग-अलग लंबाई की दो सूचियां को भरने के लिए
val list1 = ("a", "b", "c")
val list2 = ("x", "y")
अब मैं इन 2 सूचियों विलय और स्ट्रिंग तत्वों के साथ एक नई सूची बनाने के लिए चाहते हैं concatenated जा रहा है :
val desiredResult = ("ax", "by", "c")
मैं
val wrongResult = (list1, list2).zipped map (_ + _)
here प्रस्तावित के रूप में
की कोशिश की, लेकिन यह इरादे के रूप में काम नहीं करता है, क्योंकि ज़िप लंबे सूची के उन तत्वों को त्याग देता है जिन्हें मिलान नहीं किया जा सकता है।
मैं इस समस्या को कैसे हल कर सकता हूं? सूचियों को ज़िप करने का कोई तरीका है और यदि कोई सूची अधिक है तो "डिफ़ॉल्ट तत्व" (इस मामले में खाली स्ट्रिंग की तरह) दें?
मुझे लगता है कि हमेशा कुछ ऐसा नहीं जानता है। –
धन्यवाद! अब यह इस समाधान के साथ काम करता है: 'list1.zipAll (list2, "", "") मानचित्र ({case (y, x) => y + x})' लेकिन 'list1.zipAll (list2," के साथ पहले जैसा नहीं है "," ") मानचित्र (_ + _)'। ज़िप्ड फ़ंक्शन की तरह zipAll के साथ मैं छोटा वाक्यविन्यास क्यों नहीं उपयोग कर सकता? – ForceOfWill
@ForceOfWill: '(list1, list2) .zipped' एक 'tuple2Zipped' देता है, जहां [' .map'] (http://www.scala-lang.org/api/current/index.html#scala.runtime .Tuple2Zipped @ मानचित्र [बी, टू] (एफ: (एल 1, एल 2) => बी) (implicitcbf: scala.collection.generic.CanBuildFrom [Repr1, B, To]): करने के लिए) एक f f: (El1, एल 2) => बी' (यानी एक समारोह जो 2 तर्क लेता है)। 'सूची [ए]' ''.map' एक' f: ए => बी' लेता है, यानी केवल 1 तर्क (जो इस मामले में 'tuple2' है)। दुर्भाग्य से इसका मतलब है कि '_ + _' (जो एक फ़ंक्शन है जो 2 तर्क लेता है) यहां लागू नहीं किया जा सकता है। – Marth