Xcode编译器不接受三元运算符

时间:2014-07-01 09:13:53

标签: objective-c xcode ternary-operator

我正在使用这一小段代码:

CGFloat gradientLocations[2] = {1.0f, 0.0f};

不幸的是有一个错误,因为渐变指向一个方向并且没有正确旋转。所以我想用这样的方位角修复它:

CGFloat gradientLocations[2] = self.isAzimuthDown ? {0.0f, 1.0f} : {1.0f, 0.0f};

但我一直得到错误,我错过了“:”,我不相信我...我的问题是 - 它有什么问题以及如何解决它?

1 个答案:

答案 0 :(得分:1)

该语言不支持数组初始值设定项中的条件表达式。您可以使用memcpy或在单个初始值设定项中为每个元素使用条件表达式来解决此问题:

使用memcpydemo):

CGFloat gradientLocations[2];
memcpy(gradientLocations, self.isAzimuthDown ? (CGFloat[]){0.0f, 1.0f} : (CGFloat[]){1.0f, 0.0f}, sizeof(gradientLocations));

在标量表达式中使用条件(demo):

CGFloat gradientLocations[2] = {self.isAzimuthDown ? 0.0f : 1.0f, self.isAzimuthDown ? 1.0f : 0.0f};