gpt4 book ai didi

ruby - 如何像在 Prime 类中一样在 Ruby 中创建默认实例?

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

我想制作一个类或一个模块,可以用“require”或“require_relative”加载/要求。然而,为了简单起见,我不想实例化任何对象,只是开始使用它的方法,类似于 Ruby 的 Prime 类。我怎样才能做到这一点?

require "my_module"
puts My_module.convert("data")

取而代之的是:

require "my_module"
an_instance = My_module::My_class.new
puts an_instance.convert("data")

http://ruby-doc.org/stdlib-1.9.3/libdoc/prime/rdoc/Prime.html

最佳答案

Prime 类使用 singleton pattern实现这种行为,然后 uses a clever trick使所有实例方法看起来就像它们是类方法一样。但是,我真的不明白为什么这样做。如果需要保持一些全局状态,单例模式会很有用,但 Prime 类并没有真正利用它。有人说单例是最被滥用的模式,他们可能是对的。

我现在只是猜测您的转换器不需要保持全局状态。按照这个假设,您可以只使用模块方法来实现您描述的 API。例如:

module MyModule
def self.convert(data)
MyClass.new.convert(data)
end
end

然后你可以调用这个方法

MyModule.convert("data")

关于ruby - 如何像在 Prime 类中一样在 Ruby 中创建默认实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515374/

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