匿名函数之lambda表达式
函数 表达式 lambda 匿名
2023-09-11 14:22:54 时间
匿名函数就如名字暗示的一样,匿名函数实际上就是一个没有名字或者标示(identifier)的函数。匿名函数只有内容(也可以叫做body),我们可以将其存储在一个变量中,以便之后使用,或者将其当做一个参数传递给另外一个函数使用。
Objective-C是构建于C语言之上,属于强类型编译语言。因此闭包性和匿名函数在Objective-C中是可以使用。
所谓的匿名函数大部分是采用lambda实现的,而Lambda虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。
一、Objective-C实现匿名函数
^{printf("Hello, World!\n"); } ();
//或
NSString * ( ^ myBlock )( int );
myBlock = ^( int number )
{
return [ NSString stringWithFormat: @"Passed number: %i", number ];
};
NSLog( @"%@", myBlock(5) );
二、C/C++语言实现匿名函数(C++11引入了lambda表达式)
注:C语言要实现匿名函数,只能通过宏定义的方式来实现
见 http://www.bubuko.com/infodetail-984294.html
使用C++11特性的匿名函数如下
[] { cout << "Hello, World" << endl; } ();
三、C#实现匿名函数(C#2.0引入了lambda表达式)
//使用C# 2.0中的匿名方法获取字符串长度
Func<string, int> strLength = delegate(string str) { return str.Length; };
Console.WriteLine(strLength("Hello World!"));
//使用Lambda表达式
//(显式类型参数列表)=> {语句},lambda表达式最冗长版本
strLength = (string str) => { return str.Length; };
Console.WriteLine(strLength("Hello World!"));
四、Java实现匿名函数(Java8引入了lambda表达式)
Callable<String> c = () -> "done";
//或
Comparator<String> c = (s1, s2) -> s1.compareToIgnoreCase(s2);
相关文章
- spring学习笔记(11)@AspectJ研磨分析[2]切点表达式函数详解
- 【C/C++学院】0829-位容器multimapmutisetString/算法函数兰不达表达式以及类重载/GPU编程
- C#语法之匿名函数和Lambda表达式
- Angular input控件的click事件表达式如何被转换成JavaScript函数
- PHP发送邮件函数sendmail()
- ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)&求导函数等代码实现之详细攻略
- android Kotlin 匿名函数和内联函数
- Qt匿名函数Lambda表达式详解
- Qt中使用匿名函数lambda表达式
- lambda表达式无法抛出异常_Lambda 异常处理
- lambda表达式或者匿名函数中为什么要求外部变量为final
- Java学习路线-12:Lambda表达式与函数式编程
- Python编程:eval函数的使用
- SQLServer cast()函数
- getline函数
- Lambda 表达式有何用处?史上最好的java 函数编程介绍 强烈推荐!!!
- JavaScript函数表达式
- C++使用技巧(二十六):unique、distance、accumulate搭配lambda函数表达式使用
- (59)C#里多个地方使用表达式的函数体
- python web py入门(44)- jQuery 事件 - 函数表达式
- Java开发『函数式编程』——Lambda表达式
- 【java8新特性】——lambda表达式与函数式接口详解(一)
- JDK8_01_JDK8新特性,Lambda表达式带来函数式编程,简化代码