2006 年 4 月 2 日 22 時 46 分

プロパティと言う概念


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


一部の高級言語には、プロパティと言う概念がある。
プロパティは、setter と getter を
特別な構文でカプセル化したものだ。

    Rectangle rect = new Rectangle();
    rect.width = 100;
    int value = rect.width;

C# や VB など、Microsoft 系のユーザにはおなじみだが、
Java や C++、Perl などには、それらの概念がない。

    Rectangle rect = new Rectangle();
    rect.setWidth(100);
    int value = rect.getWidth();

public フィールドを使えば、構文的には達成できるのだが、
フィールドへの代入となるため、
代入される値のチェックができないのである。

プロパティのない言語で、アクセサを定義すると、
setXXX や getXXX (isXXX) のメソッドが非常に多くなる。
プロパティに毒された私には、何か違和感を感じてしまう。

これはこれで仕方ないことなのだ。
言語がバージョンアップして、
概念を導入するまで待つしかない。

しかし、例外はある。Perl という言語だ。(またかいな)

Perl も、C++ などと同じく、プロパティの定義はないが、
その構文の柔軟性により、プロパティのようなものを
書くことができるのだ。

最も単純なのは、getter である。
Perl では、関数の呼び出しの括弧を省略することができる。
メソッドの呼び出しの場合でも、
引数さえなければ、括弧を省略することができるのだ。

明日より、Perl における setter/getter を考えてみよう。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.