5

我对 ruby​​ 相当陌生,并且正在配置 IRB。我喜欢漂亮的打印(需要'pp'),但总是输入 pp 让它漂亮地打印它似乎很麻烦。我想做的是在默认情况下让它打印得很漂亮,所以如果我有一个 var ,比如'myvar',然后输入 myvar,它会自动调用 pretty_inspect 而不是常规的检查。我从哪里开始?理想情况下,我可以向我的 .irbrc 文件中添加一个自动调用的方法。有任何想法吗?

谢谢!

4

2 回答 2

9

irb 中默认的漂亮打印对象正是hirb所做的。这些 帖子解释了 hirb 如何将几乎任何东西转换成 ascii 表。尽管 hirb 旨在为每个类配置,但您可以将所有对象显示为表格:

# put this in ~/.irbrc
require 'rubygems'
require 'hirb'
Hirb.enable :output=>{'Object'=>{:class=>:auto_table, :ancestor=>true}}

# in irb
>> %w{three blind mice}
+-------+
| value |
+-------+
| three |
| blind |
| mice  |
+-------+
3 rows in set

>> 1..5
+-------+
| value |
+-------+
| 1     |
| 2     |
| 3     |
| 4     |
| 5     |
+-------+
5 rows in set

>> {:a=>1, :b=>2}
+---+---+
| 0 | 1 |
+---+---+
| a | 1 |
| b | 2 |
+---+---+
2 rows in set

这个相关的溢出解决方案也有一个 hirb 的例子。

于 2009-11-13T22:38:08.987 回答
1

当 irb 启动时,它会从您的 $HOME 目录中读取 .irbrc。如果您编辑(或创建)该文件并添加

require 'pp'

每次启动 irb 时都会加载它。

也可以查看一下pretty_print 方法列表的新增内容。把它扔到你的 .irbrc 中,你可以这样做:

>> 5.pm
                      %(arg1)         Fixnum
                      &(arg1)         Fixnum
                      *(arg1)         Fixnum
                     **(arg1)         Fixnum
                      +(arg1)         Fixnum
                     +@()             Fixnum(Numeric)
                      -(arg1)         Fixnum
                     -@()             Fixnum
                      /(arg1)         Fixnum
                     <<(arg1)         Fixnum
                     >>(arg1)         Fixnum
                     [](arg1)         Fixnum
                      ^(arg1)         Fixnum
                    abs()             Fixnum
                    ago(arg1, ...)    Fixnum(ActiveSupport::CoreExtensions::Numeric::Time)
               between?(arg1, arg2)   Fixnum(Comparable)
                   byte()             Fixnum(ActiveSupport::CoreExtensions::Numeric::Bytes)
                  bytes()             Fixnum(ActiveSupport::CoreExtensions::Numeric::Bytes

于 2009-11-13T21:06:01.353 回答