2011-02-08 13 views
7

for理解の内側に、私はタプルの間接参照を使用して文字列とインデックスを参照することができますfor内の部分(文字列とインデックス)に分割してというコードを読んで、stringWithIndex._1stringWithIndex._2の値に不思議を感じる必要はありませんか?はScalaのため、理解、次のコードでは、構文

私は次のことを試してみましたが、それがコンパイルされないでしょう。

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

答えて

21

あなたはほとんどそれを得た:

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キーワードは必要ありません。

+1

いやはや!私はそれを試みたはずです:-)。 – Ralph

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

RES:

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

私が必要としていたものではありませんが、素敵な書き直しはありません。 – Ralph

+2

その出力のために、単一の 'foreach(println)'は既に十分であったでしょう... – Debilski