Ruby self in layman terms?

前端 未结 3 555
梦毁少年i
梦毁少年i 2021-01-06 07:45

When is Ruby self refering to the Object and when is self refering to the Ruby class? Explanations with examples would be great. Not getting my head around this.

3条回答
  •  失恋的感觉
    2021-01-06 08:28

    My understanding is

    • In environments where you are defining class methods or module_functions, self refers to the class/module.
    • In environments where you are defining instance methods, self refers to the instance.

    For example,

    class A
      def method1
        self # => instance of A
      end
      def self.method2
        self # => class A
      endu
      def A.method3
        self # => class A
      end
    end
    
    class << A
      def method4
        self # => class A
      end
    end
    
    module B
      module_function
      def method5
        self # => module B
      end
    end
    

    Exceptions are that instance_eval, instance_exec alter self to the receiver.

提交回复
热议问题