我有一个 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)
chicago
和 tokyo
被解释为您实际上没有定义或声明的变量或方法,这就是您收到该错误的原因。
解决方案
我认为,您只是想传递两个字符串对象(将 chicago
和 tokyo
放在引号中)作为 Message.new
调用的参数,如下所示:
my_message = Message.new('chicago', 'tokyo')
这将解决您的问题。
希望这能让您清楚为什么会收到错误以及如何解决问题。
显示 'undefined local variable' 错误是因为没有与 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")
当我尝试 运行 此代码时:
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)
chicago
和 tokyo
被解释为您实际上没有定义或声明的变量或方法,这就是您收到该错误的原因。
解决方案
我认为,您只是想传递两个字符串对象(将 chicago
和 tokyo
放在引号中)作为 Message.new
调用的参数,如下所示:
my_message = Message.new('chicago', 'tokyo')
这将解决您的问题。
希望这能让您清楚为什么会收到错误以及如何解决问题。
显示 'undefined local variable' 错误是因为没有与 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")