Chu*_*ulo 0 lambda closures objective-c objective-c-blocks
我注意到Java的Lambda表达式似乎等同于Objective-C块.
Java的Lambda表达式是否完全等同于Objective-C的块?如果没有,那么什么使Objective-C块不同?
das*_*ght 6
在非常高的层面上,是的,它们是:块和lambdas都被认为实现了闭包.非正式地,它们用于将可执行逻辑与逻辑操作的数据"打包"在一起的目的相同,以便传递或存储以用于延迟执行.
但是,当您进入块的实现及其周围的语言时,存在许多重要的差异.
例如,Java中的lambdas可以被认为是创建实现单方法接口的匿名内部类的快捷方式.实现相同接口的类的对象可以在lambda可以到达的任何地方.
相比之下,Objective-C中的块是与协议(可以被认为是Java接口的对应物)的单独概念.如果使用块类型的参数声明方法,则必须为其提供块; 你不能用非块对象替换块.
归档时间:
10 年,3 月 前
查看次数:
632 次
最近记录:
9 年 前