未定义的方法'新'

dig*_*tig 2 ruby

我有一个相当简单的课程开始:

class Binding
  include Observable
  def initialize(variable)
    @variable = variable
    @state = variable.dup
    @log = Log.instance.log
  end
  # and so on...
Run Code Online (Sandbox Code Playgroud)

Binding我的测试用语setip,@test_binding = Binding.new(@test_variable)但我得到错误

"NoMethodError:未定义的方法new' for Binding:Class C:/Users/Tim/RubymineProjects/LPA/Tests/binding_test.rb:25:in设置"

我用几乎相同的标题看了一些其他问题,但似乎没有一个适用.

谁能告诉我我做错了什么?

And*_*all 6

Binding已存在于Ruby的核心,所以你在做什么在这里再开现有的类,添加/重新定义方法.由于Ruby的Binding类没有定义new,你的扩展也没有.

我建议重命名你的类,不要与Ruby核心类冲突.


Sho*_*hoe 5

有人可以告诉我我在做什么错吗?

实际上,您在该代码中没有做任何错误。事实是Binding该类已经存在于Ruby中,因此您实际要做的是重新打开另一个类,而不是定义一个新的类。

特别是Binding类没有newclass方法,这就是问题的原因。

您现在有两个合理的选择:

  1. 重命名课程
  2. 将类放入模块

第一个含义是您必须想出另一个名称,这几乎不是您想要的名称。另一个可以认为是将一个类放入您自己的模块/包/容器中,以便您区分哪些类是库的一部分,哪些是内置的。