我最近被以下代码难住了:
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.val
0
成功并按预期打印出来。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
。