【发布时间】:2018-05-18 10:27:30
【问题描述】:
什么是大于或等于的简单构造,其中相等部分仅基于布尔参数应用。
一种直接的方式(Type(Java)Script):
function isGreaterThanOrEqual(a: number, b:number, allowEqual: boolean = false): boolean {
if(allowEqual){
return a >= b;
} else {
return a > b
}
}
我有一个(旋转的)矩形碰撞检测方法,其中进行了大量的比较。有时我想包含相互接触的矩形,有时不包含(它们必须“真正”重叠),这就是为什么这个可选的allowEqual 参数会派上用场。
我想防止在这种方法中的许多地方都有这个 if 语句,并且更喜欢优雅的单行。
这可以以任何方式在单行中完成吗?
【问题讨论】:
-
return (allowEqual && a >= b) || a > b也可以。 -
@Federico 甚至返回 (allowEqual && a == b) || a > b 会工作
-
@tehvan 当然,但我认为如果像我一样写的话,意图会更清楚:)
-
如果你想要优雅,只需将函数重命名为 isGreater。如果在以后的阶段你想采取不同的方法,你只有一个地方可以改变而不是很多。
-
@tehvan 不错的建议,让我补充一下:名为“IsGreaterThan”的函数和名为“orEqual”的参数。
标签: javascript typescript logical-operators