search
LoginSignup
10

More than 3 years have passed since last update.

posted at

updated at

puts、print、pの違い【Ruby超入門】

putsprintpのメソッドはいずれも出力に使うのだが、微妙に挙動が違う。

メソッド 出力後の改行 配列の表示 呼び出すメソッド 戻り値 対象者
puts あり 要素ごとに改行 to_s nil 一般ユーザ
print なし 改行しない to_s nil 一般ユーザ
p あり 改行しない inspect 引数のオブジェクト 開発者(デバック用)

puts

putsメソッドはオブジェクト出力後の末尾に改行が入る。

puts 123
puts 'abc'
実行結果
123
abc

print

printメソッドはオブジェクト出力後に改行を加えない。

print 123
print 'abc'
実行結果
123abc

p

pメソッドは主にデバック用で、オブジェクトと型表現も含めた形の文字列を出力し、末尾に改行が入る。
文字列を出力すると、その文字列がダブルクォートで囲まれている。

p 123
p 'abc'
実行結果
123
"abc"

\nのようなエスケープ文字もそのまま出力される。

p "abc\ndef"
実行結果
"abc\ndef"

違い

putsprintは改行するかしないかの違いとなる。

putspはいずれも、オブジェクトの内容を文字列に変換するメソッドを内部的に呼び出している。
しかしinspectを呼び出しているpの方が開発者にとって役立つ情報を返すように実施されるので、デバック用として使われる。

参考書

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
What you can do with signing up
10