Go to the first, previous, next, last section, table of contents.


メソッドとは単にサブルーティンである

C++ などとは違って、Perl ではメソッド定義のための特別な構文を用意してい ません。(だたし、メソッド呼び出しのためには、少しばかり構文を用意してい ます。これについては後程。)メソッドでは、最初の引数がオブジェクトか、自 分が呼び出されたパッケージである必要があります。メソッドには、2 つの種類 があり、C++ での最も近い 2 つのメソッドの種類に準じて、静的メソッドと仮 想メソッドと呼びます。

静的メソッドは、最初の引数としてクラス名を期待します。これは、全体として のクラスに対する機能を果たすもので、クラスに属する個々のオブジェクトに対 するものではありません。コンストラクタは、典型的な静的メソッドです。多く の静的メソッドは、その第一引数を単に無視してしまいます。既にどのパッケー ジにいるのかは、分かっていますし、どのパッケージを介して起動されたかは、 関係がないからです。(静的メソッドは、通常の仮想メソッドと同じように、継 承トリーをたどっていますから、これらのパッケージが等しいとは限りません。) この他に、静的メソッドを使う典型例としては、名前によるオブジェクトの検索 があげられます:

sub find {
    my ($class, $name) = @_;
    $objtable{$name};
}

仮想メソッドは、最初の引数としてオブジェクトリファレンスを期待します。最 初の引数を shift して、`self'`this' という変数にい れ、通常のリファレンスとして使うことがよく行なわれます。

sub display {
    my $self = shift;
    my @keys = @_ ? @_ : sort keys %$self;
    foreach $key (@keys) {
        print "\t$key => $self->{$key}\n";
    }
}


Go to the first, previous, next, last section, table of contents.

検索式: