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.

如 果 你 正 传 递 参 数 到 一 个 有 左 值 属 性 的 子 过 程 , 你 一 般 会 使 用 圆 括 弧 来 防 止 歧 义 :canmod $x = 5; # 先 给 $x 赋 值 5!canmod 42 = 5;canmod($x)= 5;canmod(42)= 5;# 无 法 改 变 常 量 , 编 译 时 错 误# 这 个 是 对 的# 这 个 也 对如 果 你 想 使 用 省 略 的 写 法 , 你 可 以 在 子 过 程 只 使 用 一 个 参 数 的 情 况 下 省 略 圆 括 弧 . 使 用 ($)函 数 原 型 定 义 一 个 函 数 可 以 使 该 函 数 被 解 释 为 一 个 具 有 命 名 的 单 目 操 作 符 优 先 级 的 操 作符 . 因 为 命 名 单 目 操 作 符 优 先 级 高 于 赋 值 , 所 以 你 不 再 需 要 圆 括 弧 ( 需 不 需 要 圆 括 弧 只 是 一个 代 码 风 格 的 问 题 ).当 一 个 子 过 程 允 许 空 参 数 时 ( 使 用 () 函 数 原 型 ), 你 可 以 使 用 下 面 的 方 法 而 不 会 引 起 歧 义 :canmod = 5;因 为 没 有 哪 个 合 法 项 以 = 开 头 , 因 此 它 能 正 确 工 作 . 同 样 , 具 有 左 值 属 性 的 方 法 调 用 在 不传 送 任 何 参 数 时 也 能 省 略 圆 括 弧 :$obj->canmod = 5;我 们 保 证 在 未 来 的 <strong>Perl</strong> 版 本 中 不 改 变 上 面 的 两 种 方 法 . 当 你 希 望 在 方 法 调 用 中 封 装 对象 属 性 时 , 它 们 是 非 常 简 便 的 方 法 ( 因 此 它 们 可 以 象 方 法 调 用 一 样 被 继 承 但 又 象 变 量 一 样 访问 ).左 值 子 过 程 和 子 过 程 的 赋 值 表 达 式 右 边 部 分 可 以 通 过 使 用 标 量 替 换 子 过 程 的 方 法 , 来 确 定 是标 量 环 境 还 是 列 表 环 境 . 例 如 :data(2,3) = get_data(3,4);上 边 两 个 子 过 程 都 在 标 量 环 境 中 调 用 , 而 在 :(data(2,3)) = get_data(3,4);和 :198

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

Saved successfully!

Ooh no, something went wrong!