在 Python 中有 vars() 方法,它返回一个字典,其中包含局部变量的名称作为键,以及它们的值,所以可以这样做:
a = 1
b = 2
"%(a)s %(b)s" % vars()
Ruby 中有类似 vars() 的东西吗?我能想到的最接近的结构是
local_variables.inject({}) {|res,var| res[var] = eval(var.to_s); res}
最佳答案
你可以像这样实现它,但它不是很漂亮。正如 gnibbler 指出的那样,使用插值更容易。关于我看到做这样的事情的唯一优势是如果格式字符串多次格式化相同的值。即便如此,使用自定义哈希(而不是将变量转储到格式化程序中)或将其抽象为方法可能会更容易。
#!/usr/bin/env ruby
module Kernel
def vars(b)
Hash[
(b.eval('local_variables')-[:_]).
map{|v| [v,b.eval(v.to_s)]}
]
end
end
a = 10
puts vars(binding)
关于python - 在 Ruby 中是否有 Python 的 vars() 方法的模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549006/