C++-Lambda 表达式有什么优缺点,在哪些方面适用?

C++-Lambda 表达式有什么优缺点,在哪些方面适用?

灵芸 发布于 2017-08-06 字数 49 浏览 1173 回复 2

最好提供相关代码进行讲解说明,以及适用场景

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮生未歇 2017-09-07 2 楼

“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。Lambda表达式的本质是“匿名方法”,即当编译我们的程序代码时,“编译器”会自动将“Lambda表达式”转换为“匿名方法”。

Lambda 是C# 3.0的新特性,它提供了允许开发者在线(inline)声明自己的函数代码而无须使用委托函数(delegate function)的更加简洁的格式。

在php中,只有5.3版本以后也支持类似的写法:

usort($myArray, function ($a, $b) {
return $a < $b;
});

在 5.3版以下, 我们需要这样写:

function mySort ($a, $b) {
return $a < $b;
}
usort($myArray, 'mySort');

或者使用create_function动态创建一个函数:

usort($myArray, create_function('$a, $b', 'return $a < $b;'));

至于Lambda表达式的优点也就是简化了代码和增加了类型安全,看个人习惯编程习惯吧。

甜柠檬 2017-08-13 1 楼

什么是Lambda表达式
lambda其实就是匿名函数的概念,匿名函数就是允许在使用委托的地方通过"in-line"操作来写代码(其实就是delegate(int i) {... 这里...})。Lambda表达式提供了一个更简单更语法化的方式来书写匿名函数。它们在LINQ查询表达式中很有用-因为它们提供了更精简并且类型安全的方法来书写函数,就像传递参数一样

在什么时候用到它,它有什么优点

在什么时候用Lambda表达式呢?你可以对集合操作使用Lambda表达式。(但是你不能对函数使用Lambda表达式),用一句话说明,其实Lambda表达式的优点也就是简化了coding和增加了类型安全。

Lambda表达式的真面目是什么样的

(1)使用Lambda表达式在程序中:

static void Main(string[] args)
{
List<int> myList = new List<int> { 1,2,3,4,5 };

// 1.Lambda experssion
int val1 = myList.Find(i=> i == 4);
Console.WriteLine(val1);

Console.ReadKey();
}

(2)在近一步

static void Main(string[] args)
{
List<int> myList = new List<int> { 1,2,3,4,5 };

// 2. Lambda experssion using delegate
int val2 = myList.Find(delegate(int i) { return (i==4); });
Console.WriteLine(val2);

Console.ReadKey();
}

看一下区别,我把 i => i == 4表达式改成了一个委托 delegate(int i) { return (i==4); }。实现的效果是一样的。