Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【ruby】p pp puts print 違い。

More than 3 years have passed since last update.

書く前のイメージ・・・

p putsよりなんかいい
pp pをよくしてくれるらしい(使ったことはない)
puts 改行する
print 改行しない

ちょっとひどいですね

調べました。

p

引数のオブジェクトをわかりやすく標準出力に出力。
デバッグ用です

pp

オブジェクトなどを見やすく出力するためのライブラリです。

このライブラリを require すると Kernel.#pp が定義されます。 Kernel.#p のかわりに Kernel.#pp を使うことにより、 適切にインデントと改行された分かりやすい出力を得ることが出来ます。pp ライブラリは、 ユーザがあたらしく定義したクラスに対しても見やすい表示を するように作られていますので、Kernel.#pp を使う上で余計な作業をする 必要はありません。

pretty printの略らしい。
pと同じくデバッグ用です

puts

引数のオブジェクトを文字列に変換し、改行を加えて標準出力に出力。
to_sメソッドで文字列に変換される。

print

引数のオブジェクトを文字列に変換し、標準出力に出力。
to_sメソッドで文字列に変換される。
改行はされない。

参考
https://ref.xaio.jp/ruby/classes/kernel
https://docs.ruby-lang.org/ja/latest/library/pp.html

使ってみました

require "pp"

str = "string"
print "p=>"
p str
print "pp=>"
pp str
print "print=>"
print str
print "puts=>"
puts str

list = [1,"str",[1,2]]
print "p=>"
p list
print "pp=>"
pp list
print "print=>"
print list
print "puts=>"
puts list

hash = profile = {"last_name" => "tanaka",
           'first_name' => "takuya",
           'addres' => 'Tokyo',
           'old' => 22,
           'height' => 176,
           "weight" => 63}
print "p=>"
p hash
print "pp=>"
pp hash
print "print=>"
print hash
print "puts=>"
puts hash   

出力

$ ruby ex.rb
p=>"string"
pp=>"string"
print=>stringputs=>string
p=>[1, "str", [1, 2]]
pp=>[1, "str", [1, 2]]
print=>[1, "str", [1, 2]]puts=>1
str
1
2
p=>{"last_name"=>"tanaka", "first_name"=>"takuya", "addres"=>"Tokyo", "old"=>22, "height"=>176, "weight"=>63}
pp=>{"last_name"=>"tanaka",
 "first_name"=>"takuya",
 "addres"=>"Tokyo",
 "old"=>22,
 "height"=>176,
 "weight"=>63}
print=>{"last_name"=>"tanaka", "first_name"=>"takuya", "addres"=>"Tokyo", "old"=>22, "height"=>176, "weight"=>63}puts=>{"last_name"=>"tanaka", "first_name"=>"takuya", "addres"=>"Tokyo", "old"=>22, "height"=>176, "weight"=>63}

感想

・ppでhashがかなり見やすくなる。巨大なデータを扱うときに使いたい。
・putsってリストとか全部平らにして出力するんですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away