ruby版本:2.3.4
我是Ruby的新手,无法弄清楚为什么以下代码不会更新我的变量。
class Blah
attr_accessor :update_me
def initialize
@update_me = 6
end
def addy
puts update_me
if update_me == nil
update_me = 1
else
update_me += 1
end
end
end
这是我的输入和来自irb的结果
> a = Blah.new
=> #<Blah:0x007fdcfe819dd0 @update_me=6>
> a.addy
6
NoMethodError: undefined method `+' for nil:NilClass
from (irb):35:in `addy'
from (irb):42
from /Users/tracy/.rvm/rubies/ruby-2.3.4/bin/irb:11:in `<main>'
在我的addy方法中,它清楚地看到update_me变量的初始值为6,并且它按预期传递if == nil语句,但是当它尝试更新值时,我得到一个nil:NilClass错误。我觉得这里有一些根本性的误解。