LoginSignup
0
0

More than 1 year has passed since last update.

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

Posted at
メソッド 出力後の改行 メソッド自体の戻り値 改行文字を含めた場合 配列を出力した場合 呼び出すメソッド
puts 改行を加えて出力する。 nil 改行される 配列の[]を含まず各要素ごとに改行される to_s
print 改行を加えない。 nil 改行される 配列の[]を含め改行なし to_s
p 改行を加えて出力する。 ただし文字列を出力するとその文字列がダブルクオートで囲まれる。 引数のオブジェクトそのものが改行されずに/nのまま表示される 配列の[]を含め改行なし inspect

putsメソッドprintメソッドは内部的に引数で渡されたオブジェクトに対してto_sメソッドを呼び出して文字列に変換している。

pメソッドto_sメソッドではなくinspectメソッドを呼び出す。
文字列が出力後にダブルクオート付きになっていた理由として内部的にStringクラスのinspectメソッドが呼び出され値が出力されている

inspectメソッドは開発者にとって役立つ情報が含まれている。

違いについて実際に検証した結果👇

qiita1.png
モジュール名が実行結果として出力。
対象がクラスの場合、#<クラス名:オブジェクトid インスタンス変数>が実行結果として出力。

qiita2.png

クラスについてto_sメソッドと比べると
inspectメソッドではクラス名オブジェクトidインスタンス変数を出力、
to_sメソッドクラス名オブジェクトidのみ出力しインスタンス変数は出力しない。

qiita3.png

配列・ハッシュともに値がそのままの形で表示される。

qiita6.png

文字列に関してto_sと比べるとダブルクオートで囲まれているか・いないかの違いがある。

qiita5.png
nilに関してはto_sで出力した場合は実行結果として表示されない。

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0