DK’s diary

プログラミング初学者による発信

pメソッド、putsメソッド、printメソッドの違い

背景

Rubyアルゴリズムを勉強するのに様々な書籍やWeb上の記事を参考にしているが、
出力にp、puts、printと見る記事によって異なっていたのでそれぞれどう違うのか調べてみた。


改行の有無

pメソッド

p 'これは'
p 'pメソッド'

結果

"これは"
"pメソッド"

putsメソッド

puts 'これは'
puts 'putsメソッド'

結果

これは
putsメソッド

printメソッド

print 'これは'
print 'printメソッド'

結果

これはprintメソッド


まとめると、

  • 改行有り

 ・pメソッド
 ・putsメソッド

  • 改行無し

 ・printメソッド


になります。
ここで気になるところが、、、
pメソッドで出力した際にダブルクォーテーションが付いたままになっています。
次の章で説明します!


pメソッドにおける型情報の出力

上記のようにpメソッドで出力した際にダブルクォーテーションが付いているのは、
型情報も一緒に出力しているからです。
つまり、ダブルクォーテーションで囲むことで文字列であることを表しています。
数値だとこれはついてきません。

pメソッド

p 'これはpメソッド'
p 20200625

結果

"これはpメソッド"
20200625
変数の扱い

これについてはあまり差異は無いかと思いますが、
強いて挙げるなら、上記で説明したようにpメソッドでは型情報も出力されることでしょうか・・・。
今回は一気に見ていきましょう。

apple = 'りんご'
juice = 'ジュース'
 
print apple, juice
puts apple, juice
p apple, juice


結果

りんごジュースりんご
ジュース
"りんご"
"ジュース"


上記のように、
printメソッドは改行しないのでputsメソッドで最初に出力したappleは1段目に出力されています。
また、pメソッドは型情報も出力するのでダブルクォーテーションがついています。
変数を引数に渡すだけで出力することができることはどれも同じですね!


まとめ
  • pメソッド

 ・改行をする
 ・引数と引数の型情報(文字列or数値)も一緒に出力する

  • putsメソッド

 ・改行する
 ・引数を出力する

  • printメソッド

 ・改行しない
 ・引数を出力する