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)
Jör*_*tag 22
Kernel#p
是一个小调试兄弟Kernel#puts
:它或多或少的工作方式与它完全相同,但它使用#inspect
而不是转换其参数#to_s
.
它之所以具有如此神秘的名称,是因为您可以快速将其放入表达式并在调试时再将其取出.(我想现在Ruby正在变得越来越好"正确"的调试支持,因此它没那么有用.)
标准库Kernel#p
中的Kernel#pp
(漂亮打印)和pp
标准库中的Kernel#y
(YAML)是一些替代品yaml
.
为什么不试试呢?
>> [1,2,3].each { |d| p d }
1
2
3
Run Code Online (Sandbox Code Playgroud)