13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

my ($x, $y, $swap) = @_;my ($value) = (ref $x) ? $$x : $x;$value-= (ref $y) ? $$y : $y;if ($swap) { $value = -$value }$value = 255 if $value > 255;$value = 0 if $value < 0;return bless \$value => ref($x);}package main;$byte1 = ClipByte->new(200);$byte2 = ClipByte->new(100);$byte3 = $byte1 + $byte2; # 255$byte4 = $byte1 - $byte2; # 100$byte5 = 150 - $byte2; # 50你 可 以 注 意 到 这 里 的 每 一 个 函 数 实 际 上 都 是 一 个 构 造 器 , 所 以 每 一 个 都 使 用 bless 把 它 的新 的 对 象 赐 福 回 给 当 前 类 -- 不 管 是 什 么 ; 我 们 假 设 我 们 的 类 可 以 被 继 承 。 我 们 还 假 设 如 果$y 是 一 个 引 用 , 它 是 指 向 一 个 我 们 自 己 类 型 的 对 象 的 引 用 。 除 了 测 试 ref($y) 以 外 , 如果 我 们 想 更 彻 底 一 些 ( 也 慢 一 些 ) 我 们 也 可 以 调 用 $y->isa("ClipByte")。13.3 可 重 载 操 作 符你 只 能 重 载 一 部 分 操 作 符 , 它 们 在 表 13-1 列 出 。 当 你 用 use overload 时 , 操 作 符 也 在%overload::ops 散 列 列 出 供 你 使 用 , 不 过 其 内 容 和 这 里 的 有 一 点 区 别 。表 13-1。 重 载 操 作 符333

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

Saved successfully!

Ooh no, something went wrong!