gpt4 book ai didi

objective-c - 如何在 Objective-C 中编写 lambda 方法?

转载 作者:IT老高 更新时间:2023-10-28 11:26:58 25 4
gpt4 key购买 nike

如何在 Objective-C 中编写 lambda 方法?

最佳答案

Objective-C 中的 lambda 概念现在被封装为 Blocks相当于传递引用函数。当然,可以说在 C 语言中已经有了函数指针的概念。 block 只是捕获本地状态的一种方式(即可以是闭包)。事实上, block 也可以在其他 C 语言中使用(在 Mac 上)——有一个建议是让它们成为标准 C 语法的一部分。

这是一个定义 lambda 以将两个数字相乘的示例:

int (^mult)(int, int) = ^(int a, int b) { return a*b; };

第一部分声明一个类型为 ^int(int,int) 的变量,然后将其分配给返回其两个参数的倍数的 lambda 表达式(又名 block )。然后,您可以传递该 fn,在其他地方定义它等;您甚至可以在其他功能中使用它。

这是一个定义函数的示例,当调用该函数时,会返回另一个函数:

multiplyBy = ^(int a) { return ^(int b) { return b*a; }; };
triple = multiplyBy(3);

请注意,您可以将 block 与对象类型混合(通常使用 id 作为对象类型),并且许多新的 Objective-C 对象数据结构具有某种 block 级操作。 GCD 也使用 block 来传递任意事件;但是请注意,GCD 也可以与函数指针一起使用。

关于objective-c - 如何在 Objective-C 中编写 lambda 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/943992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com