大于等于(基于布尔条件)

时间:2018-05-18 10:27:30

标签: javascript typescript logical-operators

大于等于的相同的简单结构是什么,只有基于布尔参数才应用相等的部分。

一种简单的方法(Type(Java)Script):

function isGreaterThanOrEqual(a: number, b:number, allowEqual: boolean = false): boolean {
  if(allowEqual){
    return a >= b;
  } else {
    return a > b
  }
}

我有一个(旋转的)矩形碰撞检测方法,其中进行了许多这些比较。有时候我想要包含相互接触的矩形,有时候不是(它们必须“真正”重叠),这就是为什么这个可选的allowEqual参数派上用场的原因。

我想阻止在这种方法的许多地方使用if语句,而不喜欢优雅的单行。

这可以用任何方式单行完成吗?

2 个答案:

答案 0 :(得分:3)

您可以通过返回更大的检查值或检查allowEqual和身份检查来使用分阶段方法。

return a > b || allowEqual && a === b;

答案 1 :(得分:1)

return (a - b) >= (+(!allowEqual)) * Number.EPSILON;

说明:

如果allowEqualtrue,则其否定被强制为0,因此a - b必须至少为0。如果allowEqual为false,则其否定被强制为1,因此a - b必须至少是两个数字之间可能的最小距离。