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.

owner => "Gandalf",domain => "fire",stone => "ruby";当 然 , 当 你 看 到 双 冒 号 的 时 候 可 能 还 是 会 说 ,“ 真 难 看 !”, 所 以 我 们 还 要 告 诉 你 , 你 几 乎 总是 可 以 只 使 用 光 光 的 类 名 字 , 只 要 两 件 事 为 真 。 首 先 , 没 有 和 类 同 名 的 子 过 程 名 。( 如 果 你遵 循 命 名 传 统 : 过 程 名 , 比 如 new 以 小 写 开 头 , 而 类 名 字 , 比 如 ElvenRing ? 以 大 写 开头 , 那 么 就 永 远 不 会 有 这 个 问 题 。) 第 二 , 类 是 用 下 面 的 语 句 之 一 装 载 的 :use ElvenRing;require ElvenRing;这 两 种 方 法 都 令 <strong>Perl</strong> 意 识 到 ElvenRing ? 是 一 个 模 块 名 字 , 它 强 制 任 何 在 类 名ElvenRing ? 前 面 的 光 板 名 字 , 比 如 new, 解 释 为 一 个 方 法 调 用 , 即 使 你 碰 巧 在 你 的 当 前包 里 定 义 了 一 个 自 己 的 new 子 过 程 , 也 不 会 错 误 解 释 成 子 过 程 。 我 们 通 常 不 会 在 使 用 间 接对 象 中 碰 到 问 题 , 除 非 你 在 一 个 文 件 里 填 满 多 个 类 , 这 个 时 候 ,<strong>Perl</strong> 就 可 能 不 知 道 一 个 特定 的 包 名 字 就 是 一 个 类 名 字 。 而 且 那 些 把 子 过 程 的 名 字 命 名 为 类 似 ModuleNames ? 这 样的 人 最 终 也 会 陷 入 痛 苦 。12.4 构 造 对 象所 有 对 象 都 是 引 用 , 但 不 是 所 有 引 用 都 是 对 象 。 一 个 引 用 不 会 作 为 对 象 运 转 , 除 非 引 用 它 的东 西 有 特 殊 标 记 告 诉 <strong>Perl</strong> 它 属 于 哪 个 包 。 把 一 个 引 用 和 一 个 包 名 字 标 记 起 来 ( 因 此 也 和 包中 的 类 标 记 起 来 了 , 因 为 一 个 类 就 是 一 个 包 ) 的 动 作 被 称 作 赐 福 (blessing), 你 可 以 把赐 福 (bless) 看 作 把 一 个 引 用 转 换 成 一 个 对 象 , 尽 管 更 准 确 地 说 是 它 把 该 引 用 转 换 成 一 个对 象 引 用 。bless 函 数 接 收 一 个 或 者 两 个 参 数 。 第 一 个 参 数 是 一 个 引 用 , 而 第 二 个 是 要 把 引 用 赐 福(bless) 成 的 包 。 如 果 忽 略 第 二 个 参 数 , 则 使 用 当 前 包 。$obj = { };bless($obj);# 把 引 用 放 到 一 个 匿 名 散 列# Bless 散 列 到 当 前 包bless($obj, "Critter");# Bless 散 列 到 类 Critter。这 里 我 们 使 用 了 一 个 指 向 匿 名 散 列 的 引 用 , 也 是 人 们 通 常 拿 来 做 他 们 的 对 象 的 数 据 结 构 的 东西 。 毕 竟 , 散 列 极 为 灵 活 。 不 过 请 允 许 我 们 提 醒 你 的 是 , 你 可 以 赐 福 (bless) 一 个 引 用 为任 何 你 在 <strong>Perl</strong> 里 可 以 用 作 引 用 的 东 西 , 包 括 标 量 , 数 组 , 子 过 程 和 类 型 团 。 你 甚 至 可 以 把293

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

Saved successfully!

Ooh no, something went wrong!