なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

D言語でstatic constな関数を定義したかった

以下のようなコードを定義すると、新しいgdcではエラーとなる

コード

melpon.org

import std.stdio;

void main() {
    const string data = test_for_const();
    pragma(msg, data);
}

static const string test_for_const() { return "t"; }
結果
Start
prog.d:8:21: error: function prog.test_for_const without 'this' cannot be const
 static const string test_for_const() { return "t"; }
                     ^
1
Finish

pureとかいうステートメントがあるので使う

コード

melpon.org

import std.stdio;

void main() {
    const string data = test_for_const();
    pragma(msg, data);
}

static pure string test_for_const() { return "t"; }
結果
Start
t
0
Finish
pure関数

公式に解説がありそうwww.kmonos.net