我正在使用这一小段代码:
CGFloat gradientLocations[2] = {1.0f, 0.0f};
不幸的是有一个错误,因为渐变指向一个方向并且没有正确旋转。所以我想用这样的方位角修复它:
CGFloat gradientLocations[2] = self.isAzimuthDown ? {0.0f, 1.0f} : {1.0f, 0.0f};
但我一直得到错误,我错过了“:”,我不相信我...我的问题是 - 它有什么问题以及如何解决它?
答案 0 :(得分:1)
该语言不支持数组初始值设定项中的条件表达式。您可以使用memcpy
或在单个初始值设定项中为每个元素使用条件表达式来解决此问题:
使用memcpy
(demo):
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};