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.

这 种 方 法 在 声 明 获 取 实 例 变 量 的 方 法 的 时 候 仍 然 有 些 重 复 , 所 以 你 可 能 仍 然 喜 欢 使 用 下 面 介绍 的 技 巧 之 一 , 这 些 技 巧 实 现 了 简 单 指 示 器 方 法 的 自 动 创 建 。 不 过 , 因 为 所 有 的 这 些 技 巧 都使 用 某 种 类 型 的 间 接 引 用 , 所 以 如 果 你 使 用 了 这 些 技 巧 , 那 么 你 就 会 失 去 上 面 的 编 译 时 词 法类 型 散 列 访 问 的 拼 写 检 查 好 处 。 当 然 , 你 还 是 能 保 留 一 点 点 的 时 间 和 空 间 的 优 势 。如 果 你 决 定 使 用 一 个 伪 散 列 来 实 现 你 的 类 , 那 么 任 何 从 这 个 类 继 承 的 类 都 必 须 知 晓 下 面 的 类的 伪 散 列 实 现 。 如 果 一 个 对 象 是 用 伪 散 列 实 现 的 , 那 么 所 有 继 承 分 级 中 的 成 员 都 必 须 使 用use base 和 use fields 声 明 。 比 如 :package Wizard;use base "Person";user fields qw(staff color sphere);这 么 干 就 把 Wizard 模 块 标 为 Person 的 子 类 , 并 且 装 载 Person.pm 文 件 。 而 且 除 了来 自 Person 的 数 据 域 外 , 还 在 这 个 类 中 注 册 了 三 个 新 的 数 据 域 。 这 样 , 当 你 写 :my Wizard $mage = fields::new("Wizard");的 时 候 , 你 就 能 得 到 一 个 可 以 访 问 两 个 类 的 数 据 域 的 伪 散 列 :$mage->name("Gandalf");$mage->color("Grey");因 为 所 有 子 类 都 必 须 知 道 他 们 用 的 是 一 种 伪 散 列 的 实 现 , 所 以 , 从 效 率 和 拼 写 安 全 角 度 出 发 ,它 们 应 该 使 用 直 接 伪 散 列 句 法 :$mage->{name} = "Gandalf";$mage->{color} = "Grey";不 过 , 如 果 你 希 望 保 持 你 的 实 现 的 可 互 换 性 , 那 么 你 的 类 以 外 的 用 户 必 须 使 用 指 示 器 方 法 。尽 管 use base 只 支 持 单 继 承 , 但 也 算 不 上 非 常 严 重 的 限 制 。 参 阅 第 三 十 一 章 的 use base和 use fields 的 描 述 。12.7.2 用 Class::Struct 生 成 类标 准 的 Class::Struct 模 块 输 出 一 个 叫 struct 的 函 数 。 它 创 建 了 你 开 始 构 造 一 个 完 整 的类 所 需 要 的 所 有 机 关 。 它 生 成 一 个 叫 new 的 构 造 器 , 为 每 个 该 结 构 里 命 名 的 数 据 域 增 加 一个 指 示 器 方 法 ( 实 例 变 量 )。316

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

Saved successfully!

Ooh no, something went wrong!