2006 年 4 月 13 日 23 時 56 分

複数のプロパティ


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


昨日書いた lvalue ルーチンを見てみよう。

sub salary : lvalue {
    my $this = $_[0];
    tie(my $reflector, 'Employee::Reflector',
            $this, \&get_salary, \&set_salary);
    $reflector;
}

検証は get_salary, set_salary で行っているので
lvalue ルーチン自体はかなりすっきりした。
では、同じようなプロパティを追加してみよう。
「部署」プロパティだ。

sub department : lvalue {
    my $this = $_[0];
    tie(my $reflector, 'Employee::Reflector',
            $this, \&get_department, \&set_department);
    $reflector;
}

salary と同じく、実際の取得・代入は、
get_department と set_department として別で定義する。
非常に簡単に実装できるようになった。

しかし、これまた無駄に見えてこないだろうか。
lvalue ルーチンはほとんど上と同じなのだ。

lvalue ルーチン内のメソッドをさらに別に分け、
それを呼び出す形に変形することはできるが、
lvalue ルーチン自体は必ず書かなければならない。
プロパティが増えれば、プロパティの数だけ必要だ。

プロパティの構文を実現するためだけに、
同じような記述を繰り返し書くのは面倒だ。
どうにかならないだろうか。



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