Hatena::ブログ(Diary)

sudixの日記

2011-02-17

ScalaのListでインデックス付きの操作を行いたい場合

zipWithIndexを使う。
タプルに値とインデックスが入る。

 val l = List("A", "B", "C")
 for(e <- l.zipWithIndex) yield e._2 + " : " + e._1

すると、List[java.lang.String] = List(0 : A, 1 : B, 2 : C)みたいになる。


■追記
コメントいただきました。パターンマッチを使って、こう書けるそうです。

for((i, x) <- l.zipWithIndex) yield (i + " : " + x)

こっちの方がずっとかっこいいですね!


foreach使うならこんな感じで。

l.zipWithIndex.foreach{case (x, i) => println(i + ":" + x)}

yoshihiro503yoshihiro503 2011/02/19 15:23 for式の中の束縛でパターンマッチが使えるので、

for((i, x) <- l.zipWithIndex) yield (i + " : " + x)

のように書くこともできます。このパターンマッチをNinja-Pattern Match と呼ぶ人もいるようです。

sudixsudix 2011/02/20 00:27 おおお、こんな書き方ができるんですか!
参考になります。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/sudix/20110217/1297928331
Connection: close