Swift でジェネリック型のクランプをする
クランプ(Clamp)とは、ある値が任意の範囲になるように調整することをいう。
たとえば、値を 0 〜 10 の値にしたければ、以下のようなコードを書く。
if x < 0 { x = 0 } if x > 10 { x = 10 }
ただし、必要な箇所でその都度、上のようなコードを書くと煩雑なので、これを関数化すると便利だ。
対象の型を特定しないようにジェネリック(Generic)にして関数化すると下のようになった。
static func clamp<T: Comparable>(_ val: T, min: T, max: T) -> T { if val < min { return min } if val > max { return max } return val }