gpt4 book ai didi

ruby - 在另一个模块中扩展 Ruby 模块,包括模块方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:25:13 28 4
gpt4 key购买 nike

每当我尝试扩展 ruby​​ 模块时,我都会丢失模块方法。 include 和 extend 都不会这样做。考虑片段:

module A 
def self.say_hi
puts "hi"
end
end

module B
include A
end

B.say_hi #undefined_method

无论 B 包含还是扩展 A,都不会定义 say_hi。

有什么办法可以完成这样的事情吗?

最佳答案

如果您是 module A 的作者并且经常需要它,您可以像这样重新编写 A:

module A 
module ClassMethods
def say_hi
puts "hi"
end
end
extend ClassMethods
def self.included( other )
other.extend( ClassMethods )
end
end

module B
include A
end

A.say_hi #=> "hi"
B.say_hi #=> "hi"

关于ruby - 在另一个模块中扩展 Ruby 模块,包括模块方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662722/

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