enchantJS でゲームを書いていて欲しくなったので作った
コード
class @ElzupUtils
# 第2, 3引数によって定義される範囲に固定される第1引数の値を計算する
@clamp = (val, max, min=0, padding=0) ->
Math.max(Math.min(max - padding, val), min + padding)
使用例
# 10 から 100 の間に
ElzupUtils.clamp(50, 100, 10)
# -> 50
ElzupUtils.clamp(200, 100, 10)
# -> 100
ElzupUtils.clamp(-20, 100, 10)
# -> 10
# 0 から 10 の間に
ElzupUtils.clamp(-20, 10)
# -> 0
ElzupUtils.clamp(20, 10)
# -> 10
# 5 (= 0 + 5) から 95 (= 100 - 5) の間に
ElzupUtils.clamp(0, 100, 0, 5)
# -> 5
ElzupUtils.clamp(100, 100, 0, 5)
# -> 95
作ってみて思ったこと
- 引数の順番は (val, min, max) のが良いか? (デフォルトが0 の場合が多いためminを後ろにした)
- val は適切な命名か?
- デフォルト引数=演算子の両隣にスペースは必要か?(coffeelint にかけて見たらどちらでも通った)