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

时间:2015-12-04 00:07:29

标签: ruby string literals

当我尝试运行此代码时:

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

2 个答案:

答案 0 :(得分:2)

问题

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

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')

这将解决您的问题。

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

答案 1 :(得分:1)

显示“未定义的局部变量”错误,因为没有与 chicago tokyo 关联的值。如果您只想将它​​们作为字符串传递,请将它们用引号括起来,如下所示:

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

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