如何在Objective-C中编写lambda方法?
最佳答案
现在,Objective-C中的lambda概念已经用Blocks的思想封装了,它相当于传递引用函数。当然,可以说有人在C中已经有了函数指针的概念。块只是捕获本地状态的一种方法(即可以是闭包)。实际上,块也可以在其他C语言中使用(在Mac上)-有人建议使它们成为标准C语法的一部分。
这是定义一个lambda将两个数字相乘的示例:
int (^mult)(int, int) = ^(int a, int b) { return a*b; };
第一部分声明了一个类型为
^int(int,int)
的变量,然后将其分配给lambda表达式(aka块),该表达式返回其两个参数的倍数。然后,您可以传递那个fn,在其他地方定义它;您甚至可以在其他功能中使用它。这是定义一个函数的示例,该函数在调用时将返回另一个函数:
multiplyBy = ^(int a) { return ^(int b) { return b*a; }; };
triple = multiplyBy(3);
请注意,您可以将块与对象类型混合(通常使用
id
作为对象类型),并且许多新的Objective-C对象数据结构具有某种块级操作。 GCD还使用块来传递任意事件;但是,请注意,GCD也可以与函数指针一起使用。关于objective-c - 如何在Objective-C中编写lambda方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/943992/