新的 lambda 语法是什么?

发布于 2024-12-26 12:20:11 字数 66 浏览 1 评论 0原文

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

I've heard there is going to be a new syntax in DMD 2.058 for anonymous functions, but I can't find any information on it. What is the new syntax, and is the old syntax going to be deprecated?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寻梦旅人 2025-01-02 12:20:11

我相信它就像C#

以下是等效的:

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

as are:

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

as are:

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

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

I believe it's like C#'s.

The following are equivalent:

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

as are:

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

as are:

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

though I'm not sure whether explicit return types are also supported in the new syntax.

勿忘初心 2025-01-02 12:20:11

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

所以不要做类似的事情,而是

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

做类似的事情

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

No current lambda functionality is being removed. It's just that a new, terser syntax is being introduced for those who want it. As Merhdad says, it's essentially C#'s syntax, though I don't know if it's 100% identical.

So instead of doing something like

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

you do something like

auto found = find!(a => func(a) == value)(range);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文