如何在Ruby中为类的特定属性定义方法?

问题描述:

我有一些Ruby问题。 让我有课猫。 Cat有age ::属性,它是Class :: Integer。 如何添加方法.humanize,它将计算我的项目中所有猫的人类年龄等效形式? 即...如何在Ruby中为类的特定属性定义方法?

@cat.age #=> 2 
@cat.age.humanize #=> 20 
@tree.age #=> 5 
@tree.age.humanize #=> NO METHOD ERROR!!! OH, YEAH! 
+1

@ everm1ind,人会避开你的问题,如果你从来没有接受答案。您应该完成所有针对每个问题的答案,如果您想在StackOverflow上认真对待,请点击最有用的答案旁边的复选标记。 – providence

+0

@providence,感谢您的建议! – everm1nd

这被称为元编程。你可以完成你想要通过执行以下操作:

def @cat.humanize_age 
    return @age * 10 
end 

你可以添加方法到Integer类从内Cat本身:

class Cat 
    attr_accessor :age 

    def initialize(a) 
    @age = a 
    add_meta 
    end 

    def add_meta 
    def @age.humanize 
     return self * 10 
    end 
    end 
end