当我尝试运行此代码时:
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
创建一个实例,并且很好奇为什么这不起作用。我以为这会在我打电话给班级时起作用。
答案 0 :(得分:2)
使用您当前的代码,您会收到以下错误:
undefined local variable or method `chicago' for main:Object (NameError)
因为您实例化Message
类的方式:
my_message = Message.new(chicago, tokyo)
chicago
和tokyo
被解释为您实际未定义或声明的变量或方法,这就是您遇到该错误的原因。
我想,您只想传递两个字符串对象(将chicago
和tokyo
放在引号中)作为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")