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
}