为什么这个实例变量是5而不是4?

时间:2015-02-25 00:28:30

标签: ruby

class Node
  attr_accessor :value

  def initialize(value)
    @value
  end
end

class Testo
  attr_accessor :root

  def method
    @root = Node.new(4)
    current = @root
    current.value = 5
  end
end

testing = Testo.new
testing.method
puts testing.root.value #=> Returns 5

我不明白。局部变量current现在是实例变量吗?它是@root的副本吗? root不应该是4而不是5吗?

1 个答案:

答案 0 :(得分:1)

Ruby中的变量是对象的引用。

你真正在做的是用value=4实例化一个新的Node对象,然后使用'current'变量(name)引用它(同时@root引用相同的对象),然后更改它值为5.