Ruby 请教一个 ruby 的问题

benzhang · 2018年02月10日 · 最后由 benzhang 回复于 2018年02月10日 · 1113 次阅读

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

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

chenge 回复

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

benzhang 关闭了讨论。 02月10日 20:02
需要 登录 后方可回复, 如果你还没有账号请 注册新账号