匿名函数之lambda表达式
【摘要】
匿名函数就如名字暗示的一样,匿名函数实际上就是一个没有名字或者标示(identifier)的函数。匿名函数只有内容(也可以叫做body),我们可以将其存储在一个变量中,以便之后使用,或者将其当做一个参数传递给另外一个函数使用。
Objective-C是构建于C语言之上,属于强类型编译语言。因此闭包性和匿名函数在Objective-C中...
匿名函数就如名字暗示的一样,匿名函数实际上就是一个没有名字或者标示(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语言要实现匿名函数,只能通过宏定义的方式来实现
见 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);
文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chy555chy/article/details/51620043
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)