大于等于的相同的简单结构是什么,只有基于布尔参数才应用相等的部分。
一种简单的方法(Type(Java)Script):
function isGreaterThanOrEqual(a: number, b:number, allowEqual: boolean = false): boolean {
if(allowEqual){
return a >= b;
} else {
return a > b
}
}
我有一个(旋转的)矩形碰撞检测方法,其中进行了许多这些比较。有时候我想要包含相互接触的矩形,有时候不是(它们必须“真正”重叠),这就是为什么这个可选的allowEqual
参数派上用场的原因。
我想阻止在这种方法的许多地方使用if语句,而不喜欢优雅的单行。
这可以用任何方式单行完成吗?
答案 0 :(得分:3)
您可以通过返回更大的检查值或检查allowEqual
和身份检查来使用分阶段方法。
return a > b || allowEqual && a === b;
答案 1 :(得分:1)
return (a - b) >= (+(!allowEqual)) * Number.EPSILON;
说明:
如果allowEqual
为true
,则其否定被强制为0
,因此a - b
必须至少为0
。如果allowEqual
为false,则其否定被强制为1
,因此a - b
必须至少是两个数字之间可能的最小距离。