Rails class << self - PullRequest
       1

Rails class << self

31 голосов
/ 02 апреля 2010

Я хотел бы понять, что означает class << self в следующем примере.

module Utility
  class Options #:nodoc:
    class << self
      def parse(args)          
      end
    end
  end
end

Ответы [ 2 ]

41 голосов
/ 02 апреля 2010

это

module Utility
  class Options #:nodoc:
    class << self
      # we are inside Options's singleton class
      def parse(args)

      end
    end
  end
end

эквивалентно:

module Utility
  class Options #:nodoc:
    def Options.parse(args)

    end
  end
end

Несколько примеров, которые помогут вам понять:

class A
  HELLO = 'world'
  def self.foo
    puts "class method A::foo, HELLO #{HELLO}"
  end

  def A.bar
    puts "class method A::bar, HELLO #{HELLO}"
  end

  class << self
    HELLO = 'universe'
    def zim
      puts "class method A::zim, HELLO #{HELLO}"
    end
  end

end
A.foo
A.bar
A.zim
puts "A::HELLO #{A::HELLO}"

# Output
# class method A::foo, HELLO world
# class method A::bar, HELLO world
# class method A::zim, HELLO universe
# A::HELLO world
4 голосов
/ 02 апреля 2010

Это собственный класс. Этот вопрос был задан ранее .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...