gpt4 book ai didi

ruby - 如何从包含模块的类调用 Ruby 模块中的静态方法?

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

是否可以在 ruby​​ 模块中声明静态方法?

module Software
def self.exit
puts "exited"
end
end

class Windows
include Software

def self.start
puts "started"
self.exit
end
end

Windows.start

上面的例子不会打印出“exited”。

模块中只能有实例方法吗?

最佳答案

像这样定义您的模块(即使 exit 成为模块中的实例方法):

module Software
def exit
puts "exited"
end
end

然后使用extend而不是include

class Windows
extend Software
# your self.start method as in the question
end

正在使用中:

irb(main):016:0> Windows.start
started
exited
=> nil

解释

obj.extend(module, ...) adds to obj the instance methods from each module given as a parameter

...因此,当在类定义的上下文中使用时(类本身作为接收者),方法成为类方法。

关于ruby - 如何从包含模块的类调用 Ruby 模块中的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3357712/

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