知っている人にとってはばかげた質問だと思いますが、それが何をするのか、それが何であるかについての説明が見つかりません。
CSV.open('data.csv', 'r') do |row|
p row
end
" " は何をしp row
ますか?
知っている人にとってはばかげた質問だと思いますが、それが何をするのか、それが何であるかについての説明が見つかりません。
CSV.open('data.csv', 'r') do |row|
p row
end
" " は何をしp row
ますか?
p()
カーネルメソッドですobj.inspect
標準出力に書き込みます。
Object は Kernel モジュールに混在しているため、p()
メソッドはどこでも使用できます。
ところで、それを詩モードで使用するのは一般的です。つまり、括弧が削除されます。CSV スニペットは次のように記述できます...
CSV.open 'data.csv', 'r' do |row|
p row
end
カーネルモジュールの残りの部分とともにここに文書化されています。
Kernel#p
は の小さなデバッグ兄弟ですKernel#puts
: 多かれ少なかれそれとまったく同じように動作しますが、#inspect
代わりに を使用して引数を変換します#to_s
。
このような不可解な名前が付いている理由は、デバッグ時にすばやく式にスローして再度取り出すことができるようにするためです。(Ruby の「適切な」デバッグ サポートがどんどん良くなってきている今では、あまり役に立たなくなっていると思います。)
いくつかの代替手段Kernel#p
は、標準ライブラリKernel#pp
の (pretty print) とpp
標準ライブラリのKernel#y
(YAML)yaml
です。
試してみませんか?
>> [1,2,3].each { |d| p d }
1
2
3
システムに既にあるドキュメントのもう 1 つのオプションは、ri
コマンドです。いつでも入力できます:ri p
またはp
が多くの場所で定義されている場合 (それはそうです)、中央コマンドを試すことができますri Kernel.p
。他の良い賭けはArray.<whatever method>
またはString.<whatever method>
です。
大量の gem をインストールすることになると、これはかなり遅くなりますが、検索プロセスを信じられないほど高速化する fastri gem を検索することができます。
Kernel#p は print や puts ほど知られていません。
改行を追加するという点では puts に似ていますが、to_s を呼び出すのではなく、p は inspect を呼び出します。
参考文献
http://garethrees.co.uk/2013/05/04/p-vs-puts-vs-print-in-ruby/