我经常遇到这种情况,我想在Ruby中调试一些东西。 然后我有一个输出到控制台的" puts"。
以下示例:
Testvariable = 4
puts Testvariable
输出当然是:
4
现在我有很多输出,所以我经常写这样的东西:
Testvariable = 4
puts "Testvariable= " + Testvariable
然后输出:
Testvariable= 4
现在这是一个非常简单的案例,但我希望它能说明我的问题。 这种可能性是否存在?
Testvariable = 4
prettyputs Testvariable
并且输出直接
Testvariable = 4
我希望你明白,我的问题是什么"是什么?当然,编写完整的字符串并不是很多工作,但我只是想知道是否存在快速而简单的可能性?
答案 0 :(得分:2)
这与以下内容重复:Ruby: getting variable name
简而言之:您无法获取变量的名称,但您可以将字符串或符号与要显示的变量的名称放在一起
def prettyputs(symb, the_binding)
var_name = symb.to_s
var_value = eval(var_name, the_binding)
puts "#{var_name} = #{var_value.inspect}"
end
toto=1
prettyputs "toto",binding
或
prettyputs :toto,binding
答案 1 :(得分:-1)
有一个名为“ap”awesome_print
的宝石,它可以或多或少地做你想要的东西。
你在这里列出的案例并不是真正的正义问题,可能如果你是“放置”东西,你可能想要了解更多有关调试和测试工具的信息。
从AP文档中,请考虑以下事项:
data = [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
使用Ruby的内置puts
进行打印会很麻烦,但AP打印出以下内容:
$ ruby 1.rb
[
[0] false,
[1] 42,
[2] [
[0] "forty",
[1] "two"
],
[3] {
:class => Time < Object,
:now => Fri Apr 02 19:55:53 -0700 2010,
:distance => 4.2e+43
}
]
我意识到这并不是你想要的,但也许以下内容同样有用:
puts TestVariable.inspect
因为你把它命名为大写,我会假设它是一个类或一个常量,你想看到它的类型,.inspect
将为你做。