赞 | 0 |
VIP | 10 |
好人卡 | 49 |
积分 | 10 |
经验 | 22958 |
最后登录 | 2020-8-1 |
在线时间 | 2161 小时 |
Lv3.寻梦者 酱油的
- 梦石
- 0
- 星屑
- 1025
- 在线时间
- 2161 小时
- 注册时间
- 2007-12-22
- 帖子
- 3271
|
4楼
楼主 |
发表于 2008-6-6 21:15:26
|
只看该作者
本帖最后由 禾西 于 2010-11-13 07:59 编辑
常量(Constant)和变量(Variable)的入门
-1. Ruby的常量和变量都是无类型的
note: 如果你对强类型这个说法没有概念的话,你根本不需要了解。
对于 C 或者 Java 的使用者来说,定义数据前都需要指定类型,以便编译器读懂数据结构。
然而,ruby 的数据是无类型的。你完全不需要指定类型,而可以直接将数据丢到变量中去。
你可以把 ruby 的变量当作一个大的垃圾缸?(笑)
0. 甚麼是常量,又甚麼是变量
你可以把变量和常量当作一种标签,因为他们本质上只是一个数据的指向标记而已。
系统的内部有个隐藏起来的对应表,对应表中记录了 标签 -> 数据 的指向。
1. 怎麽标记为一个常量,怎麽标记为一个变量
他的格式是: 标记 = 数据
常量标签总是以大写字母开头,比如:Constant
变量标签则会以其它形式出现,比如:var, @var, @@var, $var
2. 各种常量变量
标签可以分为常量和变量两种,变量可以分为全局变量、类变量、实例变量、本地变量四种。
他们最大的分别在于应用范围和修改范围- class Test
- One = 1 #定义一个常量
- $two = 0 #定义一个全局变量
- @@three = 0 #定义一个类变量
- def init
- @four = 0 #定义一个实例变量
- five = 5 #定义一个本地变量
- p One, $two, @@three, @four, five
- end
- def modify
- $two = 2
- @@three = 3
- @four = 4
- five = 5
- p One, $two, @@three, @four, five
- end
- def test1
- p One, $two, @@three, @four
- end
- def test2
- p One, $two, @@three, @four, ifve
- end
- end
- app = Test.new
- app.init #=> 1, 0, 0, 0, 5
- app.modify #=> 1, 2, 3, 4, 5
- app2 = Test.new
- app2.test1 #=> 1, 2, 3, nil
- app2.test2 #=> 出错,未定义本地变量 five
复制代码 从上面程序可以看出,常量(One),全局变量($two),类变量(@@three)都只需要定义一次就可以重复使用。
而实例变量(@four),和本地变量(five)则需要每次生成实例以后重复定义才能使用。
应用未经定义的实例变量会自动当作 nil。而应用未经定义的本地变量则会出错。
而一般情况下,修改常量也会出错:- class Test
- def test
- One = 1 #=> 语法错误(Syntax Error)
- end
- end
复制代码 更详尽的请参考这三个讨论
http://rpg.blue/viewthread.php?tid=84430
http://rpg.blue/viewthread.php?tid=81167
http://rpg.blue/thread-159895-1-1.html
以及F1中关于变量的各种说明。 |
|