Ruby 请教一个 ruby 的问题

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

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

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都是一样的结果

共收到 2 条回复

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

chenge 回复

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

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