有没有办法在Objective-C中使用带有三元运算符的块?
我正在尝试做类似的事情:
[self evaluate] ? ^{
// do somethings
} : ^{
// do something else
}
答案 0 :(得分:5)
您的结果未被使用,因为您根本没有分配您的区块
void (^someBlock)(void) = [self evaluate] ? ^{
// do somethings
} : ^{
// do something else
};
someBlock();
正如@MartinR指出的那样,如果你更喜欢变得更复杂,你可以在三元组中调用该块:
[self evaluate] ? ^{
// do somethings
}() : ^{
// do something else
}();
实际的卷积@MartinR暗示:
([self evaluate] ? ^{
// do somethings
} : ^{
// do something else
})();
正如@zaph和@joshCaswell在评论中指出的那样,虽然这在技术上是正确的(最好的正确)但它可能不是最好的做法。在更新中提到的执行块内联的情况下,如答案here.
中提到的那样特别奇怪