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
出现了问题,freeze迫使修改变的不再可能。freeze 继承于 Ojbect
|
|