什么是新的lambda语法?

Arl*_*len 10 lambda d

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

Meh*_*dad 14

我相信它就像C#.

以下是等效的:

delegate(i, j) { return i + j; }
(i, j) => i + j
Run Code Online (Sandbox Code Playgroud)

就好像:

delegate(i) { return i; }
(i) => i
i => i   // Can leave off parentheses
Run Code Online (Sandbox Code Playgroud)

就好像:

delegate(int i) { return i; }
(int i) => i
Run Code Online (Sandbox Code Playgroud)

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


Jon*_*vis 8

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

所以不要做类似的事情

auto found = find!((a){return func(a) == value;})(range);
Run Code Online (Sandbox Code Playgroud)

你做的事情

auto found = find!(a => func(a) == value)(range);
Run Code Online (Sandbox Code Playgroud)