Help us understand the problem. What is going on with this article?

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の方が開発者にとって役立つ情報を返すように実施されるので、デバック用として使われる。

参考書

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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