LoginSignup
123
87

【ruby】p pp puts print 違い。

Last updated at Posted at 2017-11-21

書く前のイメージ・・・

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

ちょっとひどいですね

調べました。

p

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

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"
p str
# "string"
pp str
# "string"
print str
# string
puts str
# string

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

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

感想

  • ppでhashがかなり見やすくなる。巨大なデータを扱うときに使いたい。
  • putsはarrayのカッコ記法を消し、要素ごとに改行して出力するため、配列のデバッグには向いていないです。
123
87
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
123
87