容易和干净的红宝石

时间:2014-11-19 12:03:37

标签: ruby puts

我经常遇到这种情况,我想在Ruby中调试一些东西。 然后我有一个输出到控制台的" puts"。

以下示例:

Testvariable = 4
puts Testvariable

输出当然是:

4

现在我有很多输出,所以我经常写这样的东西:

Testvariable = 4
puts "Testvariable= " + Testvariable

然后输出:

Testvariable= 4

现在这是一个非常简单的案例,但我希望它能说明我的问题。 这种可能性是否存在?

Testvariable = 4
prettyputs Testvariable

并且输出直接

Testvariable = 4

我希望你明白,我的问题是什么"是什么?当然,编写完整的字符串并不是很多工作,但我只是想知道是否存在快速而简单的可能性?

2 个答案:

答案 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将为你做。