【问题标题】:What's the new lambda syntax?什么是新的 lambda 语法?
【发布时间】:2012-01-13 22:13:58
【问题描述】:

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

【问题讨论】:

    标签: lambda d


    【解决方案1】:

    我相信它就像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;} 形式也受支持?也就是说,使用带有花括号分隔的语句块的运算符是否有效?
    【解决方案2】:

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

    所以不要做类似的事情

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

    你做了类似的事情

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

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多