gpt4 book ai didi

ruby - 如何将另一个模块的类方法导入到我的 ruby​​ 类/模块中?

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:06 25 4
gpt4 key购买 nike

我知道我可以导入 instance_methods,但是否可以导入类方法,如何导入?

最佳答案

一个常见的习语是这样的:

module Bar
# object model hook. It's called when module is included.
# Use it to also bring class methods in by calling `extend`.
def self.included base
base.send :include, InstanceMethods
base.extend ClassMethods
end

module InstanceMethods
def hello
"hello from instance method"
end
end

module ClassMethods
def hello
"hello from class method"
end
end
end

class Foo
include Bar
end

Foo.hello # => "hello from class method"
Foo.new.hello # => "hello from instance method"

InstanceMethods 模块有什么用?

当我需要模块将实例和类方法都包含到我的类中时,我使用两个子模块。通过这种方式,方法可以整齐地分组,例如,可以在代码编辑器中轻松折叠。

感觉也更“统一”:两种方法都是从self.included hook注入(inject)的。

无论如何,这是个人喜好的问题。此代码的工作方式完全相同:

module Bar
def self.included base
base.extend ClassMethods
end

def hello
"hello from instance method"
end

module ClassMethods
def hello
"hello from class method"
end
end
end

关于ruby - 如何将另一个模块的类方法导入到我的 ruby​​ 类/模块中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14281000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com