我有两个文件:urls.rb
和testcase.rb
。 urls.rb
具有以下内容:
$event = "/sendmessage/#{id}"
网址中的id
在 testcase.rb
中生成。这是testcase.rb
中的代码:
require 'urls.rb'
id = 100
puts $event
我看到以下错误:
undefined local variable or method `id' for main:Object (NameError)
如何解决此错误?
像id
这样的局部变量不能跨文件调用。它们的作用域在文件中受到限制。为了使用它,您必须在使用它的同一文件中分配id
。此外,您在要求'urls.rb'
后分配id
是没有意义的。
问题是您尝试在testcase.rb
定义之前在urls.rb
中使用id
。您的代码在功能上等效于以下内容:
$event = "/sendmessage/#{id}"
id = 100
puts $event
这不起作用,因为您尝试在定义id
之前调用它。您必须先定义变量:
id = 100
$event = "/sendmessage/#{id}"
puts $event
在这里它之所以有效,是因为您在尝试调用它之前已经定义了id
。
在对此类问题进行故障排除时,请考虑如果不将其分成不同的文件,它将如何工作。
因此,在不了解您要完成的任务的情况下,只需确保在尝试调用变量之前已定义变量即可。