实例变量的别名?

ker*_*lin 4 ruby variables alias instance

有没有办法为实例变量创建别名(不是谈论db别名属性),而不是将其分配给另一个实例var?

例如:

@imavar

alias_attribute(@hesavar, @imavar)
Run Code Online (Sandbox Code Playgroud)

Eim*_*tas 6

您可以改为使用getter方法.


Bry*_*Ash 6

Ruby实际上没有属性.使用时,attr_reader :imavar您正在创建一个检索值的方法:

def imavar
  @imavar
end
Run Code Online (Sandbox Code Playgroud)

因此,要为变量创建别名,您可以为该方法创建别名:

alias_method :hesavar, :imavar
Run Code Online (Sandbox Code Playgroud)

完整的例子是:

class DataHolder
  attr_reader :imavar
  alias_method :hesavar, :imavar

  def initialize(value)
    @imavar = value
  end
end

d = DataHolder.new(42)
d.imavar
 => 42
d.hesavar
 => 42
Run Code Online (Sandbox Code Playgroud)