2010-06-26 101 views
3

是否有辦法爲實例變量創建別名(而不是討論db別名屬性),而不是將其分配給另一個實例var?實例變量的別名?

對於前:

@imavar 

alias_attribute(@hesavar, @imavar) 
+0

如果您依靠伊娃名稱作爲內部API,我會認爲代碼味道。 – 2010-06-27 12:24:59

回答

6

可以別名getter方法來代替。

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