我有一个 Ruby 未定义的局部变量或方法错误

I have a Ruby undefined local variable or method error

当我尝试 运行 此代码时:

class Message
  @@messages_sent = 0
  def initialize(from, to)
    @from = from
    @to = to
    @@messages_sent += 1
  end
end

my_message = Message.new(chicago, tokyo)

我收到一条错误消息,告诉我我的参数之一是未定义的局部变量。我只是想使用 Message 创建一个实例,并且很好奇为什么这不起作用。我认为这会起作用,因为我正在调用 class.

问题

使用您当前的代码,您会收到此错误:

undefined local variable or method `chicago' for main:Object (NameError)

因为您实例化 Message class 的方式:

my_message = Message.new(chicago, tokyo)

chicagotokyo 被解释为您实际上没有定义或声明的变量或方法,这就是您收到该错误的原因。

解决方案

我认为,您只是想传递两个字符串对象(将 chicagotokyo 放在引号中)作为 Message.new 调用的参数,如下所示:

my_message = Message.new('chicago', 'tokyo')

这将解决您的问题。

希望这能让您清楚为什么会收到错误以及如何解决问题。

显示 'undefined local variable' 错误是因为没有与 chicagotokyo 关联的值。如果您只想将它​​们作为字符串传递,请将它们用引号引起来,如下所示:

class Message
    @@messages_sent = 0
    def initialize(from, to)
        @from = from
        @to = to
        @@messages_sent += 1
    end
end

my_message = Message.new("chicago", "tokyo")