我一直在寻找答案,我可以看到很多类似的问题,但我仍然不明白我在做错了什么。我已经声明了一个Ruby类并尝试新建它然后在实例上调用一些实例方法,那么为什么我的start方法会得到NoMethodError?
class MyClass
def initialize
self.class.reset
end
def self.reset
...
end
def self.start(port)
...
end
end
test = MyClass.new
test.start '8082' <- here <- undefined method `start' for #<MyClass:0x2f494b0> (NoMethodError)
你可以看到我是一个Ruby noob。任何帮助,将不胜感激。我可以改变我的班级结构,但我真的很想了解我在这里做错了什么。
答案 0 :(得分:0)
此处start
是一种类方法。
按照您当前的方法,您可以通过以下方式使用它
MyClass.start '8080'
但是,如果您想在instance
的{{1}}上使用它,请使用以下代码
class
答案 1 :(得分:0)
您使用start作为Class变量,以self-keyword开头的方法名称将这些方法作为Class方法。所以如果你真的不想改变你的课程那么你应该这样称呼它:
MyClass.start&#39; 8080&#39;
否则,您可以从重置中删除self并启动方法并将其作为Instance方法并将其用作:
test = MyClass.new
test.start&#39; 8082&#39;