这段代码中的扩展做了什么?
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
项目中没有使用到 仅支持_attrs 克拉斯从哪里来? 项目中没有提及extend
因此,如果您不熟悉 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
编辑的实例,以找到将添加这些方法的位置。