LoginSignup
0
0

More than 5 years have passed since last update.

CoffeeScript で clamp関数

Posted at

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 にかけて見たらどちらでも通った)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0