MapをzipWithIndexでループする際の注意
参考1: Setの値をzipWithIndexでループする際の注意(https://coneta.jp/article/show/2701)
参考2: Mapのループ時の注意(https://coneta.jp/article/show/2659)
上記の参考記事と似たような状況で、MapをzipWithIndexでループしたい場合にトラップがある。
MapのクラスがLinkedHashMap
の場合、普通にループを行えば順序は乱れない。
// 正常に動作する
@for(entry <- myLinkedHashMap){
@entry._1 : @entry._2
}
しかしzipWithIndexを使用すると、順序が乱れてしまう。
// 正常に動作しない
@for((entry, i) <- myLinkedHashMap.zipWithIndex){
@i : @entry._1 : @entry._2
}
この場合は上記参考記事のようにiterator
を使用すれば良い。
// 正常に動作する
@for((entry, i) <- myLinkedHashMap.iterator.zipWithIndex){
@i : @entry._1 : @entry._2
}