2011-02-08 14 views
7

निम्न कोड में, for समझ अंदर, मैं स्ट्रिंग और सूचकांक करने के लिए एक टपल भिन्नता का उपयोग कर उल्लेख कर सकते हैं:स्काला के लिए-समझ वाक्य रचना

val strings = List("a", "b", "c") 
for (stringWithIndex <- strings.zipWithIndex) { 
    // Do something with stringWithIndex._1 (string) and stringWithIndex._2 (index) 
} 

वहाँ स्काला वाक्य रचना में किसी भी तरह से stringWithIndex के लिए है for समझ के शीर्षलेख के भीतर भागों में विभाजित (स्ट्रिंग और इंडेक्स) , ताकि कोड के पाठकों को stringWithIndex._1 और stringWithIndex._2 के मानों पर आश्चर्य न हो?

मैं निम्नलिखित की कोशिश की है, लेकिन यह संकलन नहीं होगा:

scala> val strings = List("a", "b", "c") 
strings: List[java.lang.String] = List(a, b, c) 

scala> for ((string, index) <- strings.zipWithIndex) 
     | { println("str: "+string + " idx: "+index) } 
str: a idx: 0 
str: b idx: 1 
str: c idx: 2 

देखें, case कीवर्ड के लिए कोई जरूरत नहीं:

for (case (string, index) <- strings.zipWithIndex) { 
    // Do something with string and index 
} 

उत्तर

21

आप लगभग समझ में आ गया।

+1

रवींद्र! मुझे यह कोशिश करनी चाहिए थी :-)। – Ralph

7
strings.zipWithIndex.foreach{case(x,y) => println(x,y)} 

रेस:

(a,0) 
(b,1) 
(c,2) 
+0

मुझे काफी कुछ नहीं चाहिए, लेकिन एक अच्छा फिर से लिखना, कम-से-कम नहीं। – Ralph

+2

हालांकि उस आउटपुट के लिए, एक 'foreach (println) 'पहले से ही पर्याप्त होगा ... – Debilski

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