我最近被以下代码难住了:
class Foo
attr_accessor :n
def initialize(i)
@n = i
end
def val
n
end
def bump!
n += 1
end
end
f = Foo.new(0)
puts f.val
f.bump!
puts f.val0成功并按预期打印出来。f.bump!导致以下NoMethodError
foo.rb:13:in `bump!': undefined method `+' for nil:NilClass (NoMethodError)
from foo.rb:20:in `<main>'
知道为什么n在nil表达式中n += 1吗?
相反,使用n = 1 + n会引发TypeError( nil cannot be coerced into Fixnum),n事实上也是如此nil。