Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Непонятный оператор


Автор: GrayCardinal 17.9.2008, 12:36
День добрый !

Такой вопрос. Что делает вторая строчка ?
Цитата
class MD5 < Digest::MD5
  class << self
    def new(str = nil)
    def md5(*args)

Автор: kemiisto 17.9.2008, 13:54
GrayCardinal, google умер?
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/57252, например.

Автор: GrayCardinal 17.9.2008, 13:58
А по-русски ?   smile 

Автор: source777 18.9.2008, 10:29
GrayCardinal, а по-русски, это так называемый eigenclass (это пока по-немецки), нужно выходить на уровень eigenclass`a,  чтобы добавить методы к объекту-типа, а не к объекту-экземпляру. Проще говоря, ты таким образом можешь примешать статические методы к типу.

Добавлено через 2 минуты и 32 секунды
Хотя поскольку, твой пример к mix-in никакого отношения не имеет, то можешь переписать таким эквивалентным способом:
Код

class MD5 < Digest::MD5
    def self.new(str = nil)
    def self.md5(*args)


Это будет уже не Ruby-way, но зато привычнее, если ты раньше программировал на С++ || Delphi

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)