Ruby中的“p”是什么?
我相信对于那些知道的人来说这是一个愚蠢的问题,但是我找不到解释它是什么或者是什么的。
CSV.open('data.csv', 'r') do |row| p row end
“ p row ”是做什么的?
p()是一个内核方法
它将obj.inspect写入标准输出。
由于Object在内核模块中混合,所以p()方法在任何地方都是可用的。
顺便说一下,在诗歌模式中使用它是很常见的,也就是说,这个对象被丢弃了。 CSV片段可以写成像…
CSV.open 'data.csv', 'r' do |row| p row end
这里logging了内核模块的其余部分 。
Kernel#p #inspect是Kernel#puts的小debugging兄弟:它或多或less地和它一样工作,但它使用#inspect而不是#inspect来转换它的参数。
之所以有这样一个神秘的名字,是因为你可以快速的把它expression出来,并在debugging的时候再把它拿出来。 (我认为现在Ruby变得越来越好,“正确”的debugging支持变得不那么有用了。)
Kernel#p一些替代scheme是来自pp标准库的Kernel#pp (漂亮打印)和来自yaml标准库的Kernel#y (YAML)。
为什么不尝试呢?
>> [1,2,3].each { |d| pd } 1 2 3
您已经在系统中使用的其他文档选项是ri命令。 在任何时候你都可以input: ri p或者如果在中央命令的很多地方定义了p (你可以尝试ri Kernel.p 。 其他好的投注是Array.<whatever method>或String.<whatever method> 。
如果你最终安装了一堆gem,这会减慢很多,但你可以查找加速查找过程的最简单的方法。
内核#p比打印和放置知名度要低。
这是类似的提出,它增加了一个换行符,而不是呼吁to_s,p调用检查。
参考
http://garethrees.co.uk/2013/05/04/p-vs-puts-vs-print-in-ruby/