分享

ruby系列教材(19):Variables

 漂在北方的狼 2006-12-06

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

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多