如何绕过math.clamp?
下面是一个简单的math.clamp脚本:
local number = 10
number = math.clamp(number,1,5) -- This will make the number 5
我将如何绕过它,使math.clamp仍然使其为10,而不是最大值。和它有可能吗?
发布于 2022-06-27 15:40:07
那就分配10,不要打电话给math.clamp?
另一种覆盖math.clamp
function math.clamp(number) return number end
发布于 2022-06-27 17:20:52
假设以下简单的math.clamp
实现
function math.clamp(x, min, max)
if x < min then return min end
if x > max then return max end
return x
end
nan
是唯一不能正确夹紧的值,因为nan
(nan < min
,nan > max
)上的每个操作都计算为false
--if
不会触发。不过,无穷大(math.huge
)的行为与预期的一样。
使用math.min
和math.max
的较短的表单的行为相同:
function math.clamp(x, min, max)
return math.max(math.min(x, max), min)
end
因为math.min
和math.max
都会产生nan
,如果任何输入都是nan
!因此,如果nan
是nan
(可以通过0/0
获得),这个夹紧函数可能会返回nan
(这可能是意外的)。不过,这将是您在min
-max
范围之外能够通过此函数获得的唯一值。
可能的nan
-safe实现如下所示:
function math.clamp(x, min, max)
if x ~= x then return min end -- explicit nan handling
if x < min then return min end
if x > max then return max end
return x
end
或
function math.clamp(x, min, max)
if x >= min then
if x <= max then return x end
return max
end
return min
end
两者都会将nan
夹到min
(这是一个任意的选择)。
https://stackoverflow.com/questions/72774752
复制相似问题