如何确认Ruby代码中局部变量已被定义且其名称以字符串形式呈现?

更新于
2026-10-03 20:32:48
0阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计278个文字,预计阅读时间需要2分钟。

我可以检查是否定义了局部变量,并将其名称作为字符串输出吗?我知道有定义的函数吗?但你需要自己给出变量。例如:+a='cat'print(defined(a))

我可以检查是否定义了局部变量,并将其名称作为字符串?

我知道有定义的函数吗?但你必须自己给出变量.

例:

a = 'cat' print defined?(a) # => "cat" print defined?(b) # => nil

我需要的是:

a = 'cat' print string_defined?("a") # => "cat" print string_defined?("b") # => nil

或类似的东西.我在文档中找不到它……

我试过使用respond_to ?,但似乎不起作用……

您可以使用 eval执行此操作:

a = 'cat' eval("defined?(#{'a'})") => "local-variable" eval("defined?(#{'b'})") => nil

免责声明:此答案使用eval,因此如果您不严格控制要传递给它的字符串,则会很危险.如果这些字符串来自用户输入,绝对不应该这样做.

本文共计278个文字,预计阅读时间需要2分钟。

我可以检查是否定义了局部变量,并将其名称作为字符串输出吗?我知道有定义的函数吗?但你需要自己给出变量。例如:+a='cat'print(defined(a))

我可以检查是否定义了局部变量,并将其名称作为字符串?

我知道有定义的函数吗?但你必须自己给出变量.

例:

a = 'cat' print defined?(a) # => "cat" print defined?(b) # => nil

我需要的是:

a = 'cat' print string_defined?("a") # => "cat" print string_defined?("b") # => nil

或类似的东西.我在文档中找不到它……

我试过使用respond_to ?,但似乎不起作用……

您可以使用 eval执行此操作:

a = 'cat' eval("defined?(#{'a'})") => "local-variable" eval("defined?(#{'b'})") => nil

免责声明:此答案使用eval,因此如果您不严格控制要传递给它的字符串,则会很危险.如果这些字符串来自用户输入,绝对不应该这样做.