- Perl ›
- オブジェクト指プログラミング ›
- アクセッサ
アクセッサを生成する
アクセッサを生成してみます。アクセッサとは、フィールドを取得・設定するためのメソッドのことです。
package Point; sub new { my $class = shift; my $self = bless {@_}, $class; return $self; } # xを取得・設定するアクセッサ sub x { my $self = shift; if (@_) { $self->{x} = $_[0]; return $self; } return $self->{x}; }
アクセッサを使って、x
の値を取得・設定してみましょう。
my $point = Point->new; # xの設定 $point->x(3); # xの取得 print $point->x . "\n";
アクセッサの実装の解説
アクセッサの実装を解説します。
# xを取得・設定するアクセッサ sub x { my $self = shift; if (@_) { $self->{x} = $_[0]; return $self; } return $self->{x}; }
shift関数で、インスタンスを受け取ります。
my $self = shift;
引数が存在する場合は、フィールドの設定と解釈し、引数の値をフィールドに設定します。戻り値は、インスタンスとしています。
if (@_) { $self->{x} = $_[0]; return $self; }
引数が存在しない場合は、フィールドの取得と解釈し、フィールドを返却します。
return $self->{x};
アクセッサのカスタマイズ
アクセッサのカスタマイズのサンプルです。
読み取り専用アクセッサ
読み取り専用のアクセッサにしたい場合は以下のように記述します。
# xを取得するアクセッサ sub x { my $self = shift; return $self->{x}; }