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.

summon 和 speak 方 法 都 是 由 Wizard 类 定 义 的 —— 或 者 是 从 一 个 它 继 承 来 的 类 定 义的 。 不 过 你 用 不 着 担 心 这 个 。 用 不 着 管 Wizard 的 闲 事 。因 为 箭 头 操 作 符 是 左 关 联 的 ( 参 阅 第 三 章 , 单 目 和 双 目 操 作 符 ), 你 甚 至 可 以 把 这 两 个 语 句合 并 成 一 条 :Wizard->summon("Gandalf")->speak("friend");有 时 候 你 想 调 用 一 个 方 法 而 不 想 先 知 道 它 的 名 字 。 你 可 以 使 用 方 法 调 用 的 箭 头 形 式 , 并 且 把方 法 名 用 一 个 简 单 的 标 量 变 量 代 替 :$method = "summon";$mage = Wizard->$method("Gandalf");# 调 用 Wizard->summon$travel = $companion eq "Shadowfax" ? "ride" : "walk";$mage->$travel("seven leagues");# 调 用 $mage->ride 或 者 $mage->walk虽 然 你 间 接 地 使 用 方 法 名 调 用 了 方 法 , 这 个 用 法 并 不 会 被 use strict 'refs' 禁 止 , 因 为 所有 方 法 调 用 实 际 上 都 是 在 它 们 被 解 析 的 时 候 以 符 号 查 找 的 形 式 进 行 的 。在 我 们 的 例 子 里 , 我 们 把 一 个 子 过 程 的 名 字 存 储 在 $travel 里 , 不 过 你 也 可 以 存 储 一 个 子过 程 引 用 。 但 这 样 就 忽 略 了 方 法 查 找 算 法 , 不 过 有 时 候 你 就 是 想 这 样 处 理 。 参 阅 “ 私 有 方 法 ”节 和 在 “UNIVERSAL: 最 终 的 祖 先 类 ” 节 里 面 的 can 方 法 的 讨 论 。 要 创 建 一 个 指 向 某 方 法在 特 定 实 例 上 的 调 用 的 引 用 , 参 阅 第 八 章 的 “ 闭 合 ” 节 。12.3.2 使 用 间 接 对 象 的 方 法 调 用第 二 种 风 格 的 方 法 调 用 看 起 来 象 这 样 :METHOD INVOCANT (LIST)METHOD INVOCANT LISTMETHOD INVOCANTLIST 周 围 的 圆 括 弧 是 可 选 的 ; 如 果 忽 略 了 圆 括 弧 , 就 把 方 法 当 作 一 个 列 表 操 作 符 。 因 此 你可 以 有 下 面 这 样 的 语 句 , 它 们 用 的 都 是 这 种 风 格 的 方 法 调 用 :$mage = summon Wizard "gandalf";289

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

Saved successfully!

Ooh no, something went wrong!