Rails class << self

后端 未结 2 1796
挽巷
挽巷 2021-02-06 22:17

I would like to understand what class << self stands for in the next example.

module Utility
  class Options #:nodoc:
    class << self
         


        
相关标签:
2条回答
  • 2021-02-06 22:39

    This is an eigenclass. This question's been asked before.

    0 讨论(0)
  • 2021-02-06 22:41

    this

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

    is equivalent to:

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

    A couple examples to help you understand :

    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
    
    0 讨论(0)
提交回复
热议问题