实例变量的别名?

时间:2010-06-26 22:13:01

标签: ruby variables instance alias

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

例如:

@imavar

alias_attribute(@hesavar, @imavar)

2 个答案:

答案 0 :(得分:6)

您可以改为使用getter方法。

答案 1 :(得分:6)

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

def imavar
  @imavar
end

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

alias_method :hesavar, :imavar

完整的例子是:

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