我在Objective-C中有这种代码,我想转换为Swift
+ (BOOL)isLocationOutOfChina:(CLLocationCoordinate2D)location {
BOOL oddFlag = NO;
oddFlag ^= (a.x +
(c.y - a.y) /
(b.y - a.y) *
(b.x - a.x) <
point.x);
return !oddFlag;
}
我不知道如何处理Bitwise XOR等操作符来快速^=
我的转换错误:
Binary operator ^= cannot be applied to two 'Bool' operands
答案 0 :(得分:2)
在Swift中,^
运算符(以及^=
运算符)仅适用于整数数据类型(例如Int
)。它不适用于Bool
。
但请注意,在Objective-C代码中使用^=
毫无意义。您始终以NO
开头,然后使用YES
或NO
进行异或。结果将始终是右侧的值。换句话说,NO ^ X
始终为X
。所以简单地做:
BOOL oddFlag = (a.x + ...);
在Objective-C中。然后Swift翻译很简单。