什么是新的lambda语法?

时间:2012-01-13 22:13:59

标签: lambda d

我听说DMD 2.058中会出现匿名函数的新语法,但我找不到任何关于它的信息。什么是新语法,旧语法将被弃用?

2 个答案:

答案 0 :(得分:14)

我相信它就像C#'s

以下是等效的:

delegate(i, j) { return i + j; }
(i, j) => i + j

原样:

delegate(i) { return i; }
(i) => i
i => i   // Can leave off parentheses

原样:

delegate(int i) { return i; }
(int i) => i

虽然我不确定新语法是否也支持显式返回类型。

答案 1 :(得分:8)

目前没有删除当前的lambda功能。只是为那些想要它的人引入了一种新的,更简洁的语法。作为Merhdad says,它本质上是C#的语法,但我不知道它是否100%相同。

所以不要做像

这样的事情
auto found = find!((a){return func(a) == value;})(range);

你做的事情

auto found = find!(a => func(a) == value)(range);