从包含的文件调用时,Ruby 字符串内插不起作用



我有两个文件:urls.rbtestcase.rburls.rb具有以下内容:

$event = "/sendmessage/#{id}"

网址中的idtestcase.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

在对此类问题进行故障排除时,请考虑如果不将其分成不同的文件,它将如何工作。

因此,在不了解您要完成的任务的情况下,只需确保在尝试调用变量之前已定义变量即可。

最新更新