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
}