Ruby基础教程4.3 变量_Ruby基础教程4.3 变量试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Ruby基础教程 > 4.3 变量

Ruby基础教程——4.3 变量

在 1.9 节我们提到过,变量就像是对象的名片。 Ruby 中有四种类型的变量。 ● 局部变量(localvariable) ● 全局变量(globalvariable) ● 实例变量(instancevariable) ● 类变量(classvariable) 变量的命名方式决定了变量的种类。 ● 局部变量 以英文字母或者 _ 开头。 ● 全局变量 以 $ 开头。 ● 实例变量 以 @ 开头。 ● 类变量 以 @@ 开头。 除了以上四种类型以外,还有一种名为伪变量(pseudo variable)的特殊变量。A 伪变量是 Ruby 预先定义好的代表某特定值的特殊变量,因此即使我们在程序里给伪变量赋值,它的值也 不会改变。Ruby 中, nil 、true、false、self 等都是伪变量。它们表面上虽然看着像变量, 但实际的行为又与变量有差别,因此称为伪变量。 局部变量与全局变量 首先让我了解一下什么是局部变量。 所谓局部,即变量在程序中的有效范围(也称为变量的作用域)是局部的。也就是说,在程 序某个地方声明的变量名,在其他地方也可以使用,程序会也会认为这两个变量是没有关系的、 不同的变量。B -------------------- A 实际上还有一种叫预定义变量(Pre-defined Variable)的特殊变量。——译者注 B 局部变量也可称为本地变量。——译者注 ------------------- 与局部变量相对的是全局变量。只要全局变量的名称相同,不管变量在程序的哪个部分使 用,程序就认为是它们是同一个变量。 举个例子,假设有个程序引用了其他程序作为自己的程序一部分。这时,如果原程序与被引 用程序中,都有一个相同名称的变量 x,由于 x 是局部变量,因此程序不会认为这两个变量 x 是 同一个变量。但是,如果是拥有相同名称的全局变量 $x,则程序会认为这两个变量 $x 是相 同的变量。 代码清单 4.1 和代码清单 4.2 是调查变量作用域的两个小程序。在 scopetest.rb 中,我们预先 将变量 $x 和 x 都定义为 0 后,读取 sub.rb 的内容。在 sub.rb 中,我们再把刚才两个变量的值都 设为 1。然后,回到 scopetest.rb 程序的第 6 行和第 7 行,我们输出这两个变量的值后会发现,x 的值没有变化,但 $x 的值已经是 1 了。这是由于在 scopetest.rb 以及 sub.rb 中,程序会把 $x 当 作同一个变量来处理,而把 x 当作不同的变量来处理。 代码清单 4.1  scopetest.rb 代码清单 4.2  sub.rb 图 4.1  局部变量与全局变量 一般我们并不推荐使用全局变量。全局变量的值在程序的任何地方都可以修改,因此在规 模较大的程序中使用时,会增加程序不必要的复杂度,给阅读程序、修改程序造成意想不到的麻 烦。本书也很少对全局变量进行说明,示例中也没使用过。 程序首次给局部变量赋值的同时,该局部变量就被初始化了。如果引用了未初始化的局部变 量,程序会抛出异常。 执行示例 实例变量与类变量,是在定义类的时候用到的变量,因此我们留到第 8 章再详细说明。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《Ruby基础教程》其他试读目录

• 4.1 对象
• 4.2 类
• 4.3 变量 [当前]
• 4.4 常量
• 4.5 保留字
• 4.6 多重赋值
• 5.1 什么是条件判断
• 5.2 Ruby 中的条件
• 5.3 逻辑运算符
• 5.4 if 语句
• 5.5 unless 语句
• 5.6 case 语句
• 5.7 if 修饰符与 unless 修饰符
• 5.8 总结