我可以检查是否定义了局部变量,并将其名称作为字符串? 我知道有定义的函数吗?但你必须自己给出变量. 例: a = 'cat'print defined?(a) # = "cat"print defined?(b) # = nil 我需要的是: a = 'cat'p
我知道有定义的函数吗?但你必须自己给出变量.
例:
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,因此如果您不严格控制要传递给它的字符串,则会很危险.如果这些字符串来自用户输入,绝对不应该这样做.
