第11
行的bug是故意放在那里的.我很好奇pry
在这个例子中是如何工作的.
在下面的代码中,当我输入pry
时,如果我输入name
,我得到nil
,这意味着pry
正在输出局部变量的值,该值将在第11
行初始化.然而,有一个getter方法name
,如果我在第9
行输出其值,我得到"Nemo".
pry
是否首先在方法中查找局部变量?如果是这样,为什么第9
行的name
不是未定义的?
class Animal
attr_accessor :name
def initialize(name)
@name = name
end
def change_name
binding.pry
p name
name = name.upcase
end
end
fish = Animal.new('Nemo')
p fish.name # => 'Nemo'
p fish.change_name