Dをつつく20-プロパティ。えっ!あったの?
そしたら、やっぱりあったんだ。感覚としてはJavaに近い形でね。 Dマニュアルに書いてあるコーディング規則を読んだ時「Javaっぽい」と思ったけど、 D言語はやっぱりJavaに大きく影響を受けているね。
じゃあさっそくサンプルプログラムを見て♪見て♪見て♪
import std.stdio;
class Foo {
private:
//フィールド
int x, y, z;
public:
//プロパティ
int X() { return x; }
void X( int value ) { x = value; }
int Y() { return y; } //読み取り専用
void Z( int value ) { z = value; } //書き込み専用
//コンストラクタ
this( int yvalue ) { y = yvalue; }
}
int main( char[][] ) {
Foo f = new Foo( 100 );
f.X = 10;
writeln( "プロパティXの値=", f.X );
writeln( "プロパティYの値=", f.Y );
//エラー発生
writeln( "プロパティZの値=", f.Z );
f.Z = 123;
return 0;
}
このコードをコンパイルしてみて。次のメッセージが表示されると思う。
property.d(24): function property.Foo.Z (int) does not match parameter types ()
property.d(24): Error: expected 1 arguments, not 0
このメッセージを読むとD言語がプロパティを認識している事と、 書き込み専用プロパティが正しく動作している事が分るピヨ。 D言語はプロパティの記述に柔軟さを持たしているんだね。 でも公式マニュアルのクラスにプロパティの説明が載っていないのはいただけないなぁ。 きっとドリィちゃんなら「親切心が足りないぃぃ」って言うぞ。