2011-12-09 51 views
2

純函數返回純粹意味着什麼?返回純粹的純函數是什麼意思?

pure int doubleMe(in int i) pure { return i * 2; } 

該代碼編譯時沒有給出redundant storage class pure,所以我想這不是一個錯誤?

// DMD 2.056

+0

我一直在努力清理[tag:pure]標籤,因爲它有時指的是純虛函數,有時指[純](http://beebole.com/pure/),有時指[純](http://en.wikipedia.org/wiki/Pure_(programming_language)) - 等等。但我對[tag:d]一無所知。你能確認我的標籤編輯是否合適嗎?對於這個問題,我會創建[tag:pure-function],所以如果[tag:purely-functional]工作,我認爲使用現有的標籤會更好。 –

+0

@RichardJPLeGuen Pure [功能純度](http://en.wikipedia.org/wiki/Pure_function)的純粹功能可以解決這個問題。純粹的功能,不是很多。 – Arlen

回答

4

Pure是一個函數屬性。函數屬性可以在返回類型之前或參數列表之後。它描述了這兩種情況下的函數,而不是返回類型。因此,沒有「迴歸純粹」這樣的東西。

它應該提出一個錯誤,這可能是一個錯誤。同樣的事情也會被其他屬性忽略,比如@safe。

+0

你想bug報告嗎? – Arlen

+2

無論如何,它不會給'冗餘存儲類純',因爲'pure'不是存儲類。但是,它應該可能會報告一個錯誤。 –

+0

然而,它被解析爲存儲類:http://www.d-programming-language.org/declaration.html#StorageClass –

0

pure int可能應該被忽略。但是,我相信我們擁有它的原因是函數可能會返回一個「純函數」。在這種情況下,我認爲這是否是一個錯誤是有爭議的。

+0

'pure'放在返回類型之前始終指向函數。這與存儲類和其他功能屬性相同。 –

+0

我正在寫一個函數,它返回一個純函數... – DejanLekic