ruby系列教材(19):Variables
上一篇 /
下一篇 2008-02-02 15:17:43
/ 个人分类:Ruby
Variables:
1.reference指向用于保存object的内存空间,variable保存着这个reference
2.几个特殊的methods:
s = "references"
s.id #返回reference s的 id
s.class #返回s 的class
3.我们知道使用赋值,表示的是一个aliases,例如:
name = "kc"
name2 = name
这时候name 和 name2 是相同的值,我们可以共同 name.id 和 name2.id 判断,他们指着同一块内存空间
相比:这样的方式
name = "kc"
name2 = name.dup #构造一个新的reference,并且return
结果name,name2有一样的内容,但是区别在于,name.id != name2.id
说道String,这里要说一下和java里面不同的地方:
name = "kc"
puts name[0] #结果是k
puts name[1] #结果是c
这里对String的访问就提供了灵活性,java的字符串是不可以改变的,必须要通过一些特殊的途径,这就显得比较死板,ruby有很好的方式,就像c++语言,比如说:
name[0] = p
puts name #结果是pc
通过一种方式可以使得String不能被修改:
name.freeze #freeze name
name[0]="k"
TypeError: can't modify frozen string
from (irb):5:in `[]='
from (irb):5
出现了问题,freeze迫使修改变的不再可能。freeze 继承于 Ojbect
相关阅读:
- ruby系列教材(14):Class Variables (snake007008009, 2008-2-02)
- ruby系列教材(15):Class Methods (snake007008009, 2008-2-02)
- ruby小工具介绍 (snake007008009, 2008-2-02)
- 初探Rails (snake007008009, 2008-2-02)
- YAML使用基础 (snake007008009, 2008-2-02)
- 理解Symbol (snake007008009, 2008-2-02)
- Rails 基础指南 (snake007008009, 2008-2-02)
- ruby系列教材(16):Singletons and Other Constructors (snake007008009, 2008-2-02)
- ruby系列教材(17):Access Control (snake007008009, 2008-2-02)
- ruby系列教材(18):Specifying Access Control (snake007008009, 2008-2-02)
收藏
举报
TAG:
Ruby