数値のリミット
値を特定の範囲に収めたいときMath.min()とMath.max()を使う実装法です。
変数a100以内に収めようと思ったとき、たぶん普通に実装すると以下のようになります。
var a:Number = 0; if( a > 100 ) { a = 100; }
これだとリミット値を判定式と代入式で2度書くのでリミットを変更したくなったときに修正間違いしやすいです。
そこで、次のようにすると、これを一行で実装することができます。
a = Math.min( a, 100 );
Math.min()は、a と 100を比べて小さいほうを取るので、結果的にaは100以下に収まります。
最小の場合も同様にMath.max()を使って次のようにできます。
if( a > 100 ) { a = 100; } else if( a < 0) { a = 0; }
a = Math.min( a, 100 );//最大値に丸める a = Math.max( a, 0 );//最小値に丸める
ちょっと見た目でわかりにくくなるのでどうなのかなあという感じがしますが、次のようにまとめてしまってもかまいません。
a = Math.min( Math.max( a, 0 ), 100 );
- 比較して大きい方をとるのが最小値の丸め
- 比較して小さい方をとるのが最大値の丸め
なんだか逆なイメージややこしいですね。