读者在Ruby模块calss?

这个问题在这里已经有了答案:

  • Ruby中的attr_accessor是什么? 18个答案

  • 它是这样工作的:

    module Attr
      attr_accessor :my_variable
    end
    
    class MyClass
      @my_variable = "hi"
      def initialize
        @my_variable = "ho"
      end
    end
    

    include在该类中include该模块以构建实例变量@my_variable

    MyClass.include Attr
    c = MyClass.new
    c.my_variable                #=> "ho"
    c.my_variable = "huh?"       #=> "huh?"
    c.my_variable                #=> "huh?"
    

    extend模块extend到该类以构建类实例变量@my_variable

    MyClass.extend Attr          #=> MyClass
    MyClass.my_variable          #=> "hi"
    MyClass.my_variable = "nuts" #=> "nuts"
    MyClass.my_variable          #=> "nuts"
    c.my_variable                #=> "huh?"
    

    如您所见,实例变量@my_variable与类实例变量@my_variable 。 就像它们有不同的名称一样,它们共存。

    更常见的情况是,您会在类定义中看到includeextend ,但效果与上面的相同:

    class MyClass
      include Attr
      extend Attr
      @my_variable = "hi"
      def initialize
        @my_variable = "ho"
      end
    end
    
    链接地址: http://www.djcxy.com/p/25773.html

    上一篇: reader of the Module calss in Ruby?

    下一篇: accessor work in Ruby on Rails