我想要一个ruby方法“show”来做到这一点:
anyobject.show
呼叫的输出将是:
anyvar => _the_ _pp_ _string_ _of_ _the_ _object_
接近但不完全是:
p "any_var => #{any_var.pretty_inspect}"
因为您必须输入“anyvar”才能完成此操作。
答案 0 :(得分:3)
这应该做你所要求的。它以YAML格式打印有关对象的可读信息:
puts YAML::dump(object)
所以你的show方法看起来像这样:
def show:
puts YAML::dump(self)
end
并且不要忘记:
require 'yaml'
答案 1 :(得分:2)
Martin的一个增强版本:
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 2009
答案 2 :(得分:1)
通常,这是不可能的,因为方法是在对象上调用的,而不是变量。
编辑:
如果您愿意使用“函数”而不是方法,可以将其添加到内核中:
def show(var)
print "#{var} => #{eval(var).pretty_inspect}"
end
并通过
调用show "anyvar"
由于需要将变量名称作为字符串传递,这有点难看。