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