Ruby 请教一个 ruby 的问题

benzhang · February 10, 2018 · Last by benzhang replied at February 10, 2018 · 1116 hits

今天遇到一个问题,怎么都想不明白,请教一下大家以下代码

class A
  attr_accessor :a

  def search
    if false
      a = 'aaa'
    end
    a
  end

end

b = A.new
b.a = 'dddd'
p b.search
#=> nil

为什么 search 的返回会是 nil 呢,代码并没有进入 if false, 但是 a 却变成 nil 了。如果单独调用 b.a 输入还是 dddd

FYI 我试过用 Ruby 2.2.4 跟 2.3.1 都是一样的结果

a 是局部变量,不同于 b.a

Reply to chenge

是 local scope 的问题。想明白了。非常感谢

benzhang closed this topic. 10 Feb 20:02
You need to Sign in before reply, if you don't have an account, please Sign up first.