#ruby #class #methods
#ruby #класс #методы
Вопрос:
У меня есть несколько Ruby-вопросов. Пусть у меня есть класс Cat. Cat имеет атрибут age, который является Class::Integer . Как я могу добавить method .humanize, который будет вычислять эквивалент человеческого возраста для всех кошек в моем проекте? т.е. …
@cat.age #=> 2
@cat.age.humanize #=> 20
@tree.age #=> 5
@tree.age.humanize #=> NO METHOD ERROR!!! OH, YEAH!
Комментарии:
1. @everm1ind, люди будут избегать ваших вопросов, если вы никогда не принимаете ответы. Вы должны просмотреть все ответы, которые вам были даны на каждый вопрос, и установить флажок рядом с наиболее полезными, если вы хотите, чтобы к StackOverflow относились серьезно.
Ответ №1:
Это называется метапрограммированием. Вы можете выполнить то, что хотите, выполнив следующее:
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