Ruby实例变量访问

时间:2012-01-11 04:35:04

标签: ruby

只是好奇,假设设置了attr_accessor,从类中访问实例变量的最佳做法是什么。

class Test
  attr_accessor :user

  def initializer(user)
    @user = user
  end

  def foo
    @user
  end
end

class Test
  attr_accessor :user

  def initializer(user)
    @user = user
  end

  def foo
    self.user
  end
end

那么通过实例变量(@user)或getter方法(Test#user)?

1 个答案:

答案 0 :(得分:7)

Getter方法,因为它更容易重构。假设您要在访问点更新时间戳。

class Test
  def user
    @user.last_read = Time.now
    @user
  end
end

所有对user的引用都会使用新逻辑进行更新。如果您的引用是@user,那就不那么容易了。