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.

8.3.4 使 用 对 象 方 法如 果 一 个 引 用 碰 巧 是 一 个 指 向 一 个 对 象 的 引 用 , 那 么 定 义 该 对 象 的 类 可 能 提 供 了 访 问 该 对 象内 部 的 方 法 , 并 且 如 果 你 只 是 使 用 这 些 类 , 那 么 通 常 应 该 坚 持 使 用 那 些 方 法 ( 与 实 现 这 些 方法 相 对 )。 换 句 话 说 就 是 要 友 善 , 并 且 不 要 把 一 个 对 象 当 作 一 个 普 通 引 用 看 待 , 虽 然 在 你 必须 这 么 做 的 时 候 <strong>Perl</strong> 也 允 许 你 这 么 看 。 我 们 不 想 在 这 个 问 题 上 搞 极 权 。 但 是 我 们 的 确 希 望有 一 些 礼 貌 。有 了 这 种 礼 貌 , 你 就 在 对 象 和 数 据 结 构 之 间 获 得 了 正 交 。 在 你 需 要 的 时 候 , 任 何 数 据 结 构 都可 以 认 为 是 一 个 对 象 。 或 者 是 在 你 不 需 要 的 时 候 都 认 为 不 是 对 象 。8.3.5 伪 散 列一 个 伪 散 列 是 一 个 指 向 数 组 的 任 意 引 用 , 它 的 第 一 个 元 素 是 一 个 指 向 散 列 的 引 用 。 你 可 以 把伪 散 列 引 用 当 作 一 个 数 组 引 用 ( 如 你 所 料 ), 也 可 以 把 它 当 作 一 个 散 列 引 用 ( 出 乎 你 的 意 料 )。下 面 是 一 个 伪 散 列 的 例 子 。$john = [ {age => 1, eyes => 2, weight => 3}, 47, "brown", 186 ];在 $john->[0] 下 面 的 散 列 定 义 了 随 后 的 数 组 元 素 (47, "brown", 186) 的 名 字 ("age","eyes" , "weight")。 现 在 你 可 以 用 散 列 和 数 组 的 表 示 法 来 访 问 一 个 元 素 :$john->{weight}$john->[3]# 把 $john 当 作 一 个 hashref 对 待# 把 $john 当 作 一 个 arrayref 对 待伪 散 列 的 魔 术 并 不 那 么 神 奇 ; 它 只 知 道 一 个 “ 技 巧 ”: 如 何 把 一 个 散 列 解 引 用 转 变 成 一 个 数 组解 引 用 。 在 向 伪 散 列 里 增 加 其 他 元 素 的 时 候 , 在 你 使 用 散 列 表 示 法 之 前 , 必 须 明 确 告 诉 下 层的 散 列 那 些 元 素 将 放 在 哪 里 :$john->[0]{height} = 4;$john->{height} = "tall";# 高 度 是 元 素 4 的 数 值# 或 者 $john->[4] = "tall"如 果 你 试 图 从 一 个 伪 散 列 中 删 除 一 个 键 字 , 那 么 <strong>Perl</strong> 将 抛 出 一 个 例 外 , 尽 管 你 总 是 可 以 从映 射 散 列 中 删 除 键 字 。 如 果 你 试 图 访 问 一 个 不 存 在 的 键 字 , 那 么 <strong>Perl</strong> 也 会 抛 出 一 个 例 外 ,这 里 “ 存 在 ” 的 意 思 是 在 映 射 散 列 里 出 现 :delete $john->[9]{height};# 只 从 下 层 散 列 中 删 除$john->{height};# 现 在 抛 出 一 个 例 外222

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

Saved successfully!

Ooh no, something went wrong!