Ruby中的"p"是什么?

Jam*_*ght 44 ruby printf-debugging

对于那些知道的人,我确信这是一个愚蠢的问题,但我无法找到它的作用或内容的解释.

CSV.open('data.csv', 'r') do |row|
  p row
end
Run Code Online (Sandbox Code Playgroud)

" p row"有什么作用?

Dig*_*oss 80

p() 是一个内核方法

它写入obj.inspect标准输出.

因为对象在内核模块中混合,所以该p()方法随处可用.

诗歌模式中使用它是很常见的,这意味着它们会被丢弃.CSV代码段可以写成......

CSV.open 'data.csv', 'r' do |row|
  p row
end
Run Code Online (Sandbox Code Playgroud)

这里记录了内核模块的其余部分.

  • p 文档的直接链接 - http://www.ruby-doc.org/core-1.8.7/Kernel.html#method-ip (2认同)

Jör*_*tag 22

Kernel#p是一个小调试兄弟Kernel#puts:它或多或少的工作方式与它完全相同,但它使用#inspect而不是转换其参数#to_s.

它之所以具有如此神秘的名称,是因为您可以快速将其放入表达式并在调试时再将其取出.(我想现在Ruby正在变得越来越好"正确"的调试支持,因此它没那么有用.)

标准库Kernel#p中的Kernel#pp(漂亮打印)和pp标准库中的Kernel#y(YAML)是一些替代品yaml.


rfu*_*duk 5

为什么不试试呢?

>> [1,2,3].each { |d| p d }
1
2
3
Run Code Online (Sandbox Code Playgroud)

  • 实际上它首先调用`#impare`到它的参数,但足够接近;) (3认同)