kakuyonの日記

Webアプリやセキュリティに関する事を書いていけたらと考えています。

printとputsとpの違いとは (Ruby)

メモ書きです。
printとputsとpの違いに関して書いておきます。

それぞれの特徴

print、puts、p
これらは、引数として渡されたオブジェクトを標準出力するメソッドです。
出力の仕方に少しだけ違いがあります。

printメソッド

オブジェクトをそのまま出力させます。

print "foo"
print "123"
=> foo123
putsメソッド

オブジェクトを出力&最後に改行を加えます。

puts "foo"
puts "123"
=> foo
=> 123
pメソッド

オブジェクトを分かりやすい形で表示するメソッドです。
数値はそのまま表示、文字列はダブルクォートで挟んだ状態で表示されます。
putsメソッドと同様、最後に改行を加えます。

p "foo"
p "123"
=> "foo"
=> "123"

putsとpの違い

※printは、改行を行わないputsと考えればいいだけなのでスルー

pメソッドは文字列の出力方法が異なります。
つまり、出力したものが文字列なのかどうかを判別できます。

# pメソッドなら文字列の識別が可能
p 1
p "1"
=> 1
=> "1"

# putsメソッドは無理
puts 1
puts "1"
=> 1
=> 1

デバッグに活躍するやつですね。
あと、pメソッドは「\n」のようなエスケープ文字もそのまま出力します。

puts "foo\nbar"
=> foo
=> bar

p "foo\nbar"
=> "foo\nbar"


いじょう