Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 简单和干净的放在红宝石_Ruby_Puts - Fatal编程技术网

Ruby 简单和干净的放在红宝石

Ruby 简单和干净的放在红宝石,ruby,puts,Ruby,Puts,我经常遇到这样的情况,我想在Ruby中调试一些东西。 然后,我有一个到控制台的带有“put”的输出 以下示例: Testvariable = 4 puts Testvariable 结果当然是: 4 现在我有很多输出,因此我经常这样写: Testvariable = 4 puts "Testvariable= " + Testvariable 然后输出为: Testvariable= 4 这是一个非常简单的案例,但我希望它能说明我的问题是什么。 这样的可能性存在吗 Testvariabl

我经常遇到这样的情况,我想在Ruby中调试一些东西。 然后,我有一个到控制台的带有“put”的输出

以下示例:

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甚至不能反省自己来显示“名称”,因为没有一个名称。是的,“要是有人能避免被捆绑就好了。”塞尔吉奥图兰采夫说