2014-12-19 4 views
1

Я помещаю этот код в класс обертки, и поэтому все вспомогательные методы должны быть статическими. Все работает помимо моего метода секунд. Как сделать псевдоним: секунды до статического метода?Как я могу использовать статический метод в Ruby?

def self.minutes 
    (rand(58) + 1).to_s 
    end 

    def self.hours 
    (rand(22) + 1).to_s 
    end 

    alias :seconds :minutes 

ответ

4

Статические методы действительно методов экземпляра eigenclass класса, так что вы можете сделать:

class << self 
    def minutes 
    (rand(58) + 1).to_s 
    end 

    def hours 
    (rand(22) + 1).to_s 
    end 

    alias :seconds :minutes 
end 
+0

Хорошо, я только что посмотрел это и прочитал статью об этом. Я получаю классы - объекты с их собственной цепочкой наследования и пространством имен. Но что делает класс << себя? Я помещаю этот код в определение текущего класса? –

+1

@ chopperdrawlion4 Да, вы помещаете это внутреннее тело класса, который хотите расширить с помощью этих методов. Эта конструкция открывает тело собственного «самообороны». –

Смежные вопросы