在Objective-C中使用带有三元运算符的块

时间:2014-05-21 18:25:20

标签: objective-c objective-c-blocks

有没有办法在Objective-C中使用带有三元运算符的块?

我正在尝试做类似的事情:

[self evaluate] ? ^{
    // do somethings
} : ^{
    // do something else
}

1 个答案:

答案 0 :(得分:5)

您的结果未被使用,因为您根本没有分配您的区块

void (^someBlock)(void) = [self evaluate] ? ^{
    // do somethings
} : ^{
    // do something else
};

someBlock();

更新

正如@MartinR指出的那样,如果你更喜欢变得更复杂,你可以在三元组中调用该块:

[self evaluate] ? ^{
    // do somethings
}() : ^{
    // do something else
}();

更新2

实际的卷积@MartinR暗示:

([self evaluate] ? ^{
    // do somethings
} : ^{
    // do something else
})();

注意

正如@zaph和@joshCaswell在评论中指出的那样,虽然这在技术上是正确的(最好的正确)但它可能不是最好的做法。在更新中提到的执行块内联的情况下,如答案here.

中提到的那样特别奇怪