Pau*_*aul 0 ruby variable-assignment
我在ruby中编写了一段简单的代码,但它并没有像我期望的那样工作.我认为这个问题来自于对ruby如何工作的误解,特别是相对于其他语言,赋值运算符的工作原理.这是我写的:
@instance1 = @clock
@clock.tick!
@clock.tick!
@clock.tick!
@instance2 = @clock
puts " instace1.seconds: #{@instance1.seconds}, instance2.seconds: #{@instance2.seconds}"
Run Code Online (Sandbox Code Playgroud)
'Clock'是一个类,有一个值,秒,一个方法'tick!' 它将秒增加1,方法'seconds'返回秒值.秒数被初始化为0.
现在,当我运行此代码时,输出为:"instace1.seconds:3,instance2.seconds:3"
但我期望的输出是:"instance1.seconds:0,instance2.seconds:3"
因为,我在更改时钟之前已经为intance分配了@clock所具有的值,之后我没有做任何修改@ instance1的事情.
对我来说,这意味着ruby在某些上下文中将对象指定为指针,并且存在隐式解除引用.这些背景是什么?(类变量?,大对象?)
如何明确分配?换句话说,我如何取消引用变量?
就像,在C中,我会做类似的事情:
*instance1 = *c
Run Code Online (Sandbox Code Playgroud)
(虽然从指针算术开始已经很长时间了,所以这是一个粗略的例子
Ruby通过引用而不是值来分配.你能做的是@instance1 = @clock.dup或@instance1 = @clock.clone.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |