【发布时间】:2016-09-21 19:43:37
【问题描述】:
我正在使用范围为 0..<360 的 Doubles。我想创建一个有 8 个案例的 switch 语句。 0、90、180 和 270 的情况,以及介于两者之间的值的情况。似乎半开运算符不会满足我在这里尝试做的事情。我认为解决方案可能是创建一个自定义关系运算符。我们就叫它<..<
case 0:
case 0<..<90:
case 90:
case 90<..<180:
case 180:
case 180<..<270:
case 270:
case 270<..<360:
我已经研究过创建一个自定义中缀运算符,该运算符返回 Bool,但这不起作用,因为参数只包含 lhs 和 rhs。
我怎样才能做到这一点?
【问题讨论】:
-
案例不必互斥,它们按照定义的顺序进行检查,第一个获胜。您可以有一个
case: 0,后跟case: 0..<90。 -
感谢@MartinR。效果很好。
-
我很好奇你是否在现实生活中得到过“准确”的数字。我怀疑你会得到大部分/所有时间的射程?
-
@MauryMarkowitz 这些数字绝对是边缘情况。我打开的值是来自
CLLocationManagerDelegate方法的CLHeading,这会产生一些非常“精确”的双值。