ruby中的一个关于单例的问题
我是红宝石的新手。 单例类的初始化函数不应该有任何参数吗? 这是我的代码:
require 'singleton'
class AAA
attr :string , true
include Singleton
def initialize(stirng)
@string = "aaa";
end
end
a = AAA.instance("simpleton");
puts a.string
我认为应该是正确的。但红宝石也告诉我:
/usr/lib/ruby/1.8/singleton.rb:94:in `initialize': 参数数量错误(0 代表 1)(ArgumentError)
from /usr/lib/ruby/1.8/singleton.rb:94:in `new'
from /usr/lib/ruby/1.8/singleton.rb:94:in `instance'
T___T
i am a newbie about ruby.
should not the singleton class`s initialize function have any arguments?
here is my code:
require 'singleton'
class AAA
attr :string , true
include Singleton
def initialize(stirng)
@string = "aaa";
end
end
a = AAA.instance("simpleton");
puts a.string
i think should be correct.but the ruby also tell me :
/usr/lib/ruby/1.8/singleton.rb:94:in `initialize': wrong number of arguments (0 for 1) (ArgumentError)
from /usr/lib/ruby/1.8/singleton.rb:94:in `new'
from /usr/lib/ruby/1.8/singleton.rb:94:in `instance'
T___T
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于它是单例,因此不需要传递任何参数来初始化,因为它总是返回相同的对象。
如果您想在每次调用类时更改该类的某些内容,您可以定义一个新方法。
Since it's a singleton there's no need for passing any parameters to initialize, because it will always return the same object.
If you want to change something on the class everytime you call it you could define a new method.
我不确定您要做什么,但还有很多其他方法可以在不使用 Singleton 模块的情况下获取单例实例。
我个人喜欢这种方法:
如果您能提供更多关于为什么您正在尝试做的事情的信息,这可能会有所帮助。
I'm not sure what you're trying to do but there are plenty of other ways to get a singleton instance without using the Singleton module.
I personally like this method:
If you could give a little more information about why you're trying to do what you're doing it might be helpful.