我无法编写嵌套块。说我想要一个块和整数。该块将返回一个采用另一个整数的块,并返回两个整数的和。我没有运气写这个。这里有一个尝试,它并不比任何其他矿井的更糟糕:Objective-C:具有块返回类型的块的类型签名
(int ^(int)) (^bblock)(int) = ^(int a) {
return ^(int b){ return a + b; };
};
任何人能发现有什么不对?
我无法编写嵌套块。说我想要一个块和整数。该块将返回一个采用另一个整数的块,并返回两个整数的和。我没有运气写这个。这里有一个尝试,它并不比任何其他矿井的更糟糕:Objective-C:具有块返回类型的块的类型签名
(int ^(int)) (^bblock)(int) = ^(int a) {
return ^(int b){ return a + b; };
};
任何人能发现有什么不对?
相当难看,但你可以使用括号,而不是类型定义的做到这一点:
int (^(^functor)(int))(int) = ^(int a) {
return Block_copy(^(int b) {
return a + b;
});
};
我认为你的意思是'(int)',而不是'(int,int)' – 2013-03-07 22:01:20
@KevinBallard不,这是编译器错误。尝试一下。 – 2013-03-07 22:02:02
再次阅读您的街区。内部块应该只用'b',它应该从外部块中捕获'a'。 – 2013-03-07 22:02:29
'typedef'是你的朋友。 – 2013-03-07 21:52:03
@CarlNorum或Haskell。 :P – 2013-03-07 22:00:56
http://cdecl.ridiculousfish.com/?q=declare+foo+as+block+%28int%29+returning+block+%28int%29+returning+int – 2013-03-07 22:01:57