当我尝试运行此代码时:

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创建一个实例,并很好奇为什么这不起作用。我以为这会起作用,因为我打电话给全班。

最佳答案

问题
使用当前代码,会出现以下错误:

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

因为实例化Message类的方式:
my_message = Message.new(chicago, tokyo)

chicagotokyo被解释为实际上没有定义或声明的变量或方法,这就是为什么会出现此错误。
解决方案
我想,您只是想传递两个字符串对象(将chicagotokyo放在引号中)作为Message.new调用的参数,如下所示:
my_message = Message.new('chicago', 'tokyo')

这会解决你的问题。
希望这能清楚地说明你为什么会犯错误以及如何解决问题。

09-27 07:35