こんにちは、moegi (@moegi_web) です。
今回はターミナルへの出力でよく使われるputsメソッド,printメソッド,pメソッド,ppメソッドの違いについてまとめました。
puts,print,p,ppの違い
メソッド | 改行 | 戻り値 | 文字列変換 |
puts | 改行される | nilになる | to_s |
改行されない | nilになる | to_s | |
p | 改行される | 引数のオブジェクト | inspect |
pp | 整形される | 引数のオブジェクト | inspectに似た方法 |
引数:関数やプログラムに渡す値のこと
nil:存在しない状態を表す
to_s:文字列オブジェクトに変換するメソッド
inspect:オブジェクトや配列をわかりやすい文字列で返すメソッド
putsメソッド
putsメソッドは改行して変数の内容やメソッドの戻り値をターミナルに出力します。
戻り値はnilになります。
array = [1, 2, 3]
puts array
=> 1
=> 2
=> 3
printメソッド
printメソッドは改行されず変数の内容やメソッドの戻り値をターミナルに出力します。
戻り値はnilになります。
array = [1, 2, 3]
print array
=> [1, 2, 3]
pメソッド
pメソッドは改行して変数の内容やメソッドの戻り値をターミナルに出力します。引数で渡されたオブジェクトそのものがメソッドの戻り値になります。
文字列を出力すると””で囲まれ、デバッグ時によく使われる。
num_string = '1'
p num_string
=> "1"
ppメソッド
ppメソッドは複雑な配列、ハッシュを見やすくして出力します。
引数で渡されたオブジェクトそのものがメソッドの戻り値になります。
pp Encoding.aliases.take(2)
=> [["BINARY","ASCII-8BIT"],
# ["CP437","IBM437"],
# ["CP720","IBM720"]
pメソッドとputsメソッドの使い分けについて
pメソッドとputsメソッドの大まかな使い分けについてです。
pメソッドの方が開発しているときに便利な情報がたくさん出力されるデバッグ用のメソッド。
putsメソッドは単純に標準出力するメソッドです。
配列やシンボル、また他のオブジェクトなどを調べるときに違いが顕著に現れます。
=> が出力を表す
array = [1, 2, 3]
p array # 配列であることがわかりやすい
=> [1, 2, 3]
puts array
=> 1
=> 2
=> 3
symbol = :foo
p symbol # シンボルであることがわかりやすい
=> :foo
puts symbol
=> foo
num_string = '1' #文字列であることがわかりやすい
p num_string
=> "1"
puts num_string
=> 1
foo = nil
p foo
=>nil
puts foo
=> (何も表示されずに改行)
まとめ
学習を進めていくうちにあれ、pとputsってどう違ったんだっけ?と思ったのでまとめました。
しっかり覚えたいです。
コメント