hacca8

Rubyのprint、puts、p、ppの違いについて

Rubyの出力用メソッドの違いを確認します。

print

  • 改行なし
  • 返り値はnil
print 123
print '456'
print "hoge\nfuga"
hash = { hoge: 'fuga', hogehoge: 'fugafuga', hogehogehoge: 'fugafugafuga', hogehogehogehoge: 'fugafugafugafuga' }
print hash
print "\n"
def output
  print "output\n"
end
p output

# 123456hoge
# fuga{:hoge=>"fuga", :hogehoge=>"fugafuga", :hogehogehoge=>"fugafugafuga", :hogehogehogehoge=>"fugafugafugafuga"}
# output
# nil

puts

  • 改行あり
  • 返り値はnil
puts 123
puts '456'
puts "hoge\nfuga"
hash = { hoge: 'fuga', hogehoge: 'fugafuga', hogehogehoge: 'fugafugafuga', hogehogehogehoge: 'fugafugafugafuga' }
puts hash
def output
  puts 'output'
end
p output

# 123
# 456
# hoge
# fuga
# {:hoge=>"fuga", :hogehoge=>"fugafuga", :hogehogehoge=>"fugafugafuga", :hogehogehogehoge=>"fugafugafugafuga"}
# output
# nil
#

p

  • 改行あり
  • 文字列かわかるよう出力
  • 返り値は引数
p 123
p '456'
p "hoge\nfuga"
hash = { hoge: 'fuga', hogehoge: 'fugafuga', hogehogehoge: 'fugafugafuga', hogehogehogehoge: 'fugafugafugafuga' }
p hash
def output
  p 'output'
end
p output

# 123
# "456"
# "hoge\nfuga"
# {:hoge=>"fuga", :hogehoge=>"fugafuga", :hogehogehoge=>"fugafugafuga", :hogehogehogehoge=>"fugafugafugafuga"}
# "output"
# "output"
#

pp

  • 改行あり
  • 文字列かわかるよう出力
  • 返り値は引数
  • 長いハッシュは整形される
# Ruby 2.5 以降は不要、自動でrequireしてくれる
# require 'pp'

pp 123
pp '456'
pp "hoge\nfuga"
hash = { hoge: 'fuga', hogehoge: 'fugafuga', hogehogehoge: 'fugafugafuga', hogehogehogehoge: 'fugafugafugafuga' }
pp hash
def output
  pp 'output'
end
pp output

# 123
# "456"
# "hoge\n" + "fuga"
# {:hoge=>"fuga",
#  :hogehoge=>"fugafuga",
#  :hogehogehoge=>"fugafugafuga",
#  :hogehogehogehoge=>"fugafugafugafuga"}
# "output"
# "output"
#