我有一个ruby类Feedbin,它以前是模块的名称。当我尝试调用该类中的任何方法时,将引发TypeError:`':Feedbin不是一个类(TypeError)

当我更改类的名称,但添加一个s时,事情似乎按预期工作。

该程序以前也有一个名为Feedbin的模块,但是该模块不再存在。

老的:

module Feedbin
  class Api
  end
end

新的:
class Feedbin
end

如何摆脱“Feedbin不是类”类型错误?是什么原因造成的?

最佳答案

非类模块不能更改为类。一旦定义了(非类)模块,就不能将其更改为类。您可能有:

class Feedbin
...

在你拥有的地方之前的某个地方
module Feedbin
...

将该class更改为module,或者使用其他名称代替Feedbin之一。

还是,某些方法会出现错误信息?某些方法只能在类上定义。例如,如果您调用Feedbin.new或在initialize上调用Feedbin的东西,并将Feedbin更改为非类模块,则可能会导致错误。在这种情况下,请为非类模块使用其他名称。

09-25 18:41