Ruby实例变量访问

use*_*808 4 ruby

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

class Test
  attr_accessor :user

  def initializer(user)
    @user = user
  end

  def foo
    @user
  end
end
Run Code Online (Sandbox Code Playgroud)

要么

class Test
  attr_accessor :user

  def initializer(user)
    @user = user
  end

  def foo
    self.user
  end
end
Run Code Online (Sandbox Code Playgroud)

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

Mor*_*ori 7

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

class Test
  def user
    @user.last_read = Time.now
    @user
  end
end
Run Code Online (Sandbox Code Playgroud)

并且所有引用user都使用新逻辑进行更新.如果你的参考不是那么容易@user.