/ / メモ
2008-06-23

テンプレート・ミックスインが追加されたときに誰かが書いていたような気がする。
どこだったろう?

思い出せないので書いてみた。

import std.stdio;

enum {Readable=1,Writable,ReadWrite}

template Property(type,alias name,int flag=ReadWrite)
{
    mixin(type.stringof ~ " m_" ~ name ~ ";");
    static if(flag&Readable) mixin(type.stringof ~ " " ~ name ~ "(){return m_" ~ name ~ ";}");
    static if(flag&Writable) mixin(type.stringof ~ " " ~ name ~ "(" ~ type.stringof ~ " a){return m_" ~ name ~ "=a;}");
}

class Foo
{
    mixin Property!(int,"bar"); //int 型 の bar という名前のプロパティ
}

void main()
{
    auto foo = new Foo;
    foo.bar = 100;     //bar に 100 をセット
    writefln(foo.bar); //bar を読み出す。
}

mixin文を使ってみた。
std.metastring.Format をつかいたいが、壊れている。
[2008-02-26-3]

トラックバック http://mikanya.dip.jp/memo/2008-06-23-2