新的lambda语法是什么?

10

我听说DMD 2.058将会有一种新的匿名函数语法,但是我找不到任何相关信息。请问这种新的语法是什么,旧的语法是否会被弃用?

2个回答

14

我认为它跟C#很像。

以下是等价的:

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

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


听起来有点傻,但我假设(x) => {return x;}这种形式也被支持了?也就是说,使用带有花括号分隔的语句块的运算符是有效的? - CodexArcanum

8

当前的lambda功能不会被删除,只是为那些需要的人引入了一种新的、更简洁的语法。正如Merhdad所说,它基本上是C#的语法,但我不知道它是否完全相同。

因此,不再像这样做:

auto found = find!((a){return func(a) == value;})(range);

您可以这样操作

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接