無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

Dをつつく20−プロパティ。えっ!あったの?

前回の記事を読んで気になった人が居ると思う「プロパティは無いの?」ってね。 実はボクもマニュアルを見て驚いたピヨ。 だから、 Dをつつく1ーまずは学習環境を整えよう に書かれている参考ホームページを飛び回ってプロパティを探したんだ。
そしたら、やっぱりあったんだ。感覚としては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言語はプロパティの記述に柔軟さを持たしているんだね。 でも公式マニュアルのクラスにプロパティの説明が載っていないのはいただけないなぁ。 きっとドリィちゃんなら「親切心が足りないぃぃ」って言うぞ。
別窓 | D | コメント:0 | トラックバック:0 | ∧top | under∨
<<Dをつつく21−コンストラクタ。静的コンストラクタ。後ろの少年だぁあーれ♪ | 無差別に技術をついばむ鳥 | Dをつつく19−クラス。何が出来るかな♪>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |