【unity】商と余りの活用 (配列ループ)

unityはあまり関係ないかもしれませんが、時:分:秒の計算で商と余りを使用したので他にもコードを見やすく書くのにも使える方法を考えたいと思います。

配列ループ

意外にあるのですが配列のループです。

ループ中に一つ先の配列を取得して最後の要素は最初の要素を参照したい場合にifで書くこともできますが。

for(int i =0;i<array.Length;i++){
    int nextIndex = i + 1;
    if(nextIndex >= array.Length)nextIndex = 0;
    int sum = array[i] + array[nextIndex] ;
    Debug.Log(sum);
}

わざわざif分を書くしこれが逆に前の要素にアクセスに変更するときに修正が面倒。

余りを計算するとうまくループしてくれる。

for(int i =0;i<array.Length;i++){
    int nextIndex = (i + 1 + array.Length) % array.Length;
    int sum = array[i] + array[nextIndex] ;
    Debug.Log(sum);
}

逆にしたい場合も-1にすればいいだけ。

int nextIndex = (i - 1 + array.Length) % array.Length;

商は使用しませんでしたが、余りの性質をうまく使うとループの時の計算をわかりやすいのでは。

おわりに

【unity】商と余りの活用 (1次元配列を2次元配列に)も書いてみました。

コメント