引用与方法参数

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

定义一个方法,名字是 change .. 添加一个参数,名字是 s .. 在方法里面,我们可以用一下 s 的 replace . 替换一下它的内容 ...

def change(s)
s.replace('新内容!')
end

再声明一个本地变量 .. 名字是 w ... 给它一个值 ... 原内容! 然后执行一下 change 这个方法 .. 再把上面声明的这个变量 w 交给这个方法 ..

然后我们再看一下 w 这个变量表示的值 ... 这个值变成了 新内容 ...

我们在 change 这个方法的主体里面,替换了参数 s 表示的这个对象的内容 .. 调用这个方法的时候,我们给它的参数提供了一个变量 .. 这个变量是对一个对象的引用 .. 所以在 change 方法里面的 s 这个参数表示的也是一个对某个对象的引用 ..

在方法里替换了这个对象的内容以后,所有的对这个对象的引用也都会得到这个新的内容 ...

重新再给 w 分配一个值 ...

如果你想保护 w 这个变量引用的对象不受影响 ... 在调用 change 这个方法的时候,把 w 这个变量交给它,再用一下 dup 这个方法,它会复制一份 w 这个变量引用的那个对象 ... 这样在方法里面对这个对象的操作是在这个对象的复制品上做的 ..

所以 s 表示的仍然是之前分配给它的内容 ...

我们也可以冻结一下 s 表示的这个字符串 ... 使用一下 freeze 这个方法 .. 再调用一下 change 方法,把变量 w 交给它 ...

这次会报一个错误 .. 提示我们 can't modify frozen String,不能修改冻结的字符串 ...

引用与方法参数《 Ruby 语言 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点