13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

sub new {my $invocant = shift;my $class = ref($invocant) || $invocant;my $self = { %Fields, @_};# 类 似 Class::Struct 的 克 隆bless $self, $class;return $self;}sub AUTOLOAD {my $self = shift;# 只 处 理 实 例 方 法 , 而 不 处 理 类 方 法croak "$self not an object" unless ref($invocant);my $name = our $AUTOLOAD;return if $name =~ /::DESTROY$/;unless (exist $self->{name}) {croak "Can't access `$name' field in $self";}if (@_) {return $self->{$name} = shift }else { return $self->{$name} }}如 你 所 见 , 这 里 你 可 找 不 到 叫 name,race, 或 者 aliases 的 方 法 。AUTOLOAD 过 程 为你 照 看 那 些 事 情 。 当 某 人 使 用 $him->name("Aragorn") 的 时 候 , 那 么 <strong>Perl</strong> 就 调 用AUTOLOAD, 同 时 把 $AUTOLOAD 设 置 为 "Person::name"。 出 于 方 便 考 虑 , 我 们 用了 全 名 , 这 是 访 问 保 存 在 对 象 散 列 里 的 数 据 域 的 最 正 确 的 方 法 。 这 样 你 可 以 把 这 个 类 用 做 一个 更 大 的 继 承 级 中 的 一 部 分 , 而 又 不 用 担 心 会 和 其 他 类 中 使 用 的 同 名 数 据 域 冲 突 。319

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!