2011-12-09 22 views
2

純関数が純粋に返されることは、どういう意味ですか?純粋な関数が純粋な意味を返すのは何ですか?

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

コードがredundant storage class pureを与えることなくコンパイルので、私は、これはバグではありませんと仮定しますか?

// DMD2.056

+0

[タグ:pure]タグをクリーンアップしようとしました。時には純粋な仮想関数を参照することもあります。時には[pure](http://beebole.com/pure/) ](http://en.wikipedia.org/wiki/Pure_(プログラミング言語)) - その他しかし、私は[タグ:d]について何も知らない。私のタグ編集が適切かどうか確認できますか?このタグは[タグ:pure-function]を作成しました。[tag:pure-function]を作成したので、既存のタグを使用する方が良いと思います。 –

+0

@RichardJPLeGuen [機能的純度](http://en.wikipedia.org/wiki/Pure_function)のように純粋なので、純粋な関数がこの質問のために機能します。純粋に機能的ではありません。 – Arlen

答えて

4

純粋な機能属性です。関数の属性は、戻り値の型の前、またはパラメータリストの後に置くことができます。どちらの場合でも、戻り値の型ではなく関数を記述します。したがって、「純粋に戻る」というようなことはありません。

エラーが発生するはずです。おそらくバグです。 @safeのように、同じことが他の属性でも無視されます。

+0

あなたはそれをバグ報告したいですか? – Arlen

+2

'pure'はストレージクラスではないので、' redundant storage class pure'はとにかく与えられません。しかしそれでも、おそらくエラーを報告するはずです。 –

+0

これはストレージクラスとして解析されますが、次のようになります。http://www.d-programming-language.org/declaration.html#StorageClass –

0

pure intはおそらく無視する必要があります。しかし、私はそれがある理由は、関数が "純関数"を返す可能性があると考えています。その場合、バグかどうかは議論の余地があると思います。

+0

戻り値の型の前に 'pure'を置くと常に関数を参照します。これは、ストレージクラスやその他の関数属性と同じです。 –

+0

純粋な関数を返す関数について書いていました... – DejanLekic

関連する問題