【发布时间】:2012-01-13 22:13:58
【问题描述】:
我听说 DMD 2.058 中将有一个用于匿名函数的新语法,但我找不到任何关于它的信息。什么是新语法,旧语法会被弃用吗?
【问题讨论】:
我听说 DMD 2.058 中将有一个用于匿名函数的新语法,但我找不到任何关于它的信息。什么是新语法,旧语法会被弃用吗?
【问题讨论】:
我相信它就像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
虽然我不确定新语法是否也支持显式返回类型。
【讨论】:
(x) => {return x;} 形式也受支持?也就是说,使用带有花括号分隔的语句块的运算符是否有效?
没有删除当前的 lambda 功能。只是为那些需要它的人引入了一种新的、更简洁的语法。正如Merhdad says,它本质上是 C# 的语法,虽然我不知道它是否 100% 相同。
所以不要做类似的事情
auto found = find!((a){return func(a) == value;})(range);
你做了类似的事情
auto found = find!(a => func(a) == value)(range);
【讨论】: