comparison チュートリアル

このチュートリアルでは、src のドキュメントコメントとテストから取った例で二つの区間ヘルパーを紹介します。array_utils チュートリアルと同じく例はパッケージ内で実行します。別のパッケージからは @luna-utils.clamp と @luna-utils.is_between として呼び出してください。

値を区間に収める

clamp は値を区間内に移し、すでに区間内にあればそのままにします。

inspect(clamp(5, 1, 10), content="5")
inspect(clamp(-3, 1, 10), content="1")
inspect(clamp(15, 1, 10), content="10")

Compare を持つ型なら何でも使えます。たとえば辞書順の文字列です。

assert_true(clamp("abc", "def", "ghi") == "def")
assert_true(clamp("xxx", "def", "ghi") == "ghi")

区間に含まれるかを判定する

is_between は値が区間内にあるかを判定します。両端の境界も含まれます。

inspect(is_between(5, 1, 10), content="true")
inspect(is_between(10, 1, 10), content="true")
inspect(is_between(0, 1, 10), content="false")

次のステップ

どちらの関数も min <= max を検査しないので、境界はこの順序で渡してください。境界が逆になった場合の結果は API リファレンスに、二つの関数が共有する約束は設計ノートにあります。