ruby 扩展了什么

问题描述 投票:0回答:1

这段代码中的扩展做了什么?

class << self
    def extended(klass)
      klass.class_exec do
        define_method :supported_attrs do
          that_klass = self.class
          that_klass.const_defined?(:ATTRS) ? that_klass.const_get(:ATTRS) : []
        end
      end
    end
  end

https://github.com/lokalise/ruby-lokalise-api/blob/2d78458cbb16fa62d9f6018e79b7ea5da53b77f6/lib/ruby_lokalise_api/concerns/attrs_loadable.rb#L8

项目中没有使用到 仅支持_attrs 克拉斯从哪里来? 项目中没有提及extend

ruby-on-rails ruby functional-programming
1个回答
0
投票

因此,如果您不熟悉 extend 函数,它的简短版本是将指定

module
中的方法添加到
class
中。当您调用
extend
时,会在模块上调用
.extended
方法,并以
class
作为其参数:

module MyModule
  def self.extended(klass)
    p klass
  end
end

class MyClass
  extend MyModule
  # => Will print "MyClass"
end

因此,在您的情况下,您可以查找模块被

extend
编辑的实例,以找到将添加这些方法的位置。

© www.soinside.com 2019 - 2024. All rights reserved.