2012-10-28 23 views
6
val inArray = Array("a", "b", "c", "d") 
// ... 
val outArray = Array("a1", "a2", "a3", "b1", "b2", "b3", "c1", "c2", "c3", "d1", "d2", "d3") 

inArray से outArray मानचित्र कैसे करें?क्या मैं स्कैला में कई तत्वों को एक तत्व उत्पन्न या मानचित्र कर सकता हूं?

विचार inArray के माध्यम से अपने प्रत्येक तत्व से 3 तत्वों (इस उदाहरण में एक इंडेक्स को जोड़कर) उत्पन्न करने के माध्यम से फिर से शुरू करना है।

उत्तर

11

आप flatMap के साथ ऐसा कर सकते हैं।

inArray.flatMap(c => (1 to 3).map(c+)) 
+0

खैर में विस्तार से वर्णित के रूप में के लिए-समझ

for { s <- inArray i <- Array(1, 2, 3) //or other traversable } yield s + i 

इस नक्शे और flatMap कवर के तहत का एक संयोजन का उपयोग करता है एक, क्या हुआ अगर प्रत्यय का उपयोग कर देख सकते हैं एक संख्यात्मक सूचकांक नहीं है? मैं वास्तव में 3 आउटपुट तत्वों का उत्पादन करने के लिए इनपुट तत्व के कस्टम फ़ंक्शन का उपयोग करना चाहता हूं। – Ivan

+1

मानते हैं कि आपका कस्टम फ़ंक्शन एक संग्रह देता है: 'inArray.flatMap (customFunction) ' –

+0

धन्यवाद। बस। सभी एवर काम करते हैं और अपवॉट प्राप्त करते हैं लेकिन आप पहले थे :-) – Ivan

5

for -comprehension का उपयोग करना।

scala> for { 
    | x <- Array("a", "b", "c", "d") 
    | n <- 1 to 3 
    | } yield x + n 
res0: Array[java.lang.String] = Array(a1, a2, a3, b1, b2, b3, c1, c2, c3, d1, d2, d3) 
6

यह बेहतर एसएलएस

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

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