1

当我有一个哈希列表(例如.attributes调用的结果)时,创建逐行可读输出的捷径是什么?就像一个捷径

u.attributes.each {|p| puts p[0].to_s + ": " + p[1].to_s}
4

4 回答 4

2

除非您创建自己的方法,否则我不确定您是否可以缩短它。

一个小的改进是:

u.attributes.each {|k,v| puts "#{k}: #{v}"}

或者您可以创建一个扩展名Hash

class Hash
  def nice_print
    each {|k,v| puts "#{k}: #{v}"}
  end
end

u.attributes.nice_print
于 2012-12-10T08:36:52.360 回答
1

如果您正在寻找用于开发目的的输出(例如在 Rails 日志文件中),inspect或者pretty_inspect应该这样做:

u.attributes.inspect

或者

u.attributes.pretty_inspect

但是,如果您正在寻找一种在 Rails 控制台中很好地打印的方法,我相信您将不得不编写自己的方法,或者使用像awesome_print这样的 gem ,请参阅:Ruby on Rails:variable.hash_set.inspect 的漂亮打印。 ..有没有办法在控制台中漂亮地打印 .inpsect ?

于 2012-12-10T08:44:20.343 回答
1

awesome_print是要走的路

gem install awesome_print

require "ap"
ap u.attributes
于 2012-12-10T16:17:02.313 回答
1

正如我在评论中所说,我喜欢使用y hashputs YAML.dump(hash)在 yaml 中显示您的哈希值。它也可以用于其他对象

h = {:a => 1, :b => 2, :c => 3}
# => {:a=>1, :b=>2, :c=>3}
y h
#---
#:a: 1
#:b: 2
#:c: 3
# => nil 

还有一个关于它的内容丰富的答案

于 2012-12-11T23:57:14.910 回答