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 参考说明了边界颠倒时的结果,设计说明列出了两个函数共同遵循的约定。