Ruby 简单和干净的放在红宝石
我经常遇到这样的情况,我想在Ruby中调试一些东西。 然后,我有一个到控制台的带有“put”的输出 以下示例:Ruby 简单和干净的放在红宝石,ruby,puts,Ruby,Puts,我经常遇到这样的情况,我想在Ruby中调试一些东西。 然后,我有一个到控制台的带有“put”的输出 以下示例: Testvariable = 4 puts Testvariable 结果当然是: 4 现在我有很多输出,因此我经常这样写: Testvariable = 4 puts "Testvariable= " + Testvariable 然后输出为: Testvariable= 4 这是一个非常简单的案例,但我希望它能说明我的问题是什么。 这样的可能性存在吗 Testvariabl
Testvariable = 4
puts Testvariable
结果当然是:
4
现在我有很多输出,因此我经常这样写:
Testvariable = 4
puts "Testvariable= " + Testvariable
然后输出为:
Testvariable= 4
这是一个非常简单的案例,但我希望它能说明我的问题是什么。
这样的可能性存在吗
Testvariable = 4
prettyputs Testvariable
并且输出是直接的
Testvariable = 4
我希望你明白,我的“问题”是什么?当然,写下完整的字符串并不需要很多工作,但我只是想知道是否有一种快速而简单的可能性?有一种叫做“ap”的宝石,它或多或少能满足你的需要
您在这里列出的案例并不能真正解决问题,如果您正在“放置”一些东西,您可能希望了解更多关于调试和测试工具的信息
从AP文档中,考虑以下内容:
data = [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
$ 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
}
]
用Ruby的内置puts
打印这篇文章会很混乱,但AP会打印以下内容:
data = [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
$ 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
}
]
由于您将其命名为大写,我将假定它是一个类或常量,您希望查看它的类型,这将。inspect
为您提供帮助。这与:
简而言之:您无法获取变量的名称,但可以将字符串或符号与要显示的变量的名称放在一起
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
或
@MarekLipka:对eval来说似乎微不足道
prettyputs'Testvariable'
@SergioTulentsev如果你是对的。你能加上适当的例子作为回答吗?@MarekLipka:不,继续说下去。:)或者…你可以使用调试器进行调试。我想他想自动将变量名和等号放在值之前。这正是我想要的。它不必是等号。任何迹象都可以。只是好奇是否有答案……这是不可能的,因为变量是对内存中某个事物的规范实例的“引用”,有时事物可以有多个名称,所以Ruby甚至不能反省自己来显示“名称”,因为没有一个名称。是的,“要是有人能避免被捆绑就好了。”塞尔吉奥图兰采夫说