2012-01-13 66 views
9

我聽說在DMD 2.058中會有一個匿名函數的新語法,但是我找不到任何關於它的信息。什麼是新的語法,舊的語法將被棄用?什麼是新的lambda語法?

回答

13

我相信這就像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 

,雖然我不知道明確的返回類型是否也支持新的語法。

+0

似乎有點傻問,但我以爲'(x)=> {返回X;}'形式也支持?也就是說,使用帶花括號分隔的語句塊的操作符是否有效? – CodexArcanum 2012-01-18 15:52:44

+0

@CodexArcanum:不確定。 – Mehrdad 2012-01-18 16:14:56

7

沒有當前的lambda功能被刪除。這只是爲了那些想要它的人而引入了一種新的,更加細緻的語法。作爲Merhdad says,它本質上是C#的語法,儘管我不知道它是否100%相同。的

因此,而不是做一些像

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

你這樣做

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