我想要一个ruby方法"show“,它可以做到这一点:
anyobject.show调用的输出将是:
anyvar => _the_ _pp_ _string_ _of_ _the_ _object_ 一些接近的东西,但不完全是:
p "any_var => #{any_var.pretty_inspect}"因为您必须键入"anyvar“才能完成此操作。
发布于 2009-09-28 09:11:24
一般来说,这是不可能的,因为方法是在对象上调用的,而不是在变量上调用的。
编辑:
如果你愿意用一个“函数”而不是一个方法来做这件事,你可以把这个添加到内核中:
def show(var)
print "#{var} => #{eval(var).pretty_inspect}"
end并通过
show "anyvar"当然,它有点难看,因为需要将变量名作为字符串传入。
发布于 2009-09-28 09:12:55
这应该能满足您的要求。它以YAML格式打印对象的可读信息:
puts YAML::dump(object)因此,您的show方法将如下所示:
def show:
puts YAML::dump(self)
end别忘了:
require 'yaml'发布于 2009-09-28 10:17:41
Martin的one的一个增强版:
require 'pp'
def show(var,bindings)
print "#{var} => #{eval('var',bindings).pretty_inspect}"
end
a,t = 1,Time.now
show a,binding #=> a => 1
show t,binding #=> t => Mon Sep 28 13:12:34 +0300 2009https://stackoverflow.com/questions/1486087
复制相似问题