【Ruby】putsメソッドを徹底解説!

Ruby

putsメソッドとは

putsメソッドはオブジェクトをコンソールに改行を加えた状態で出力するメソッドです。

putsメソッドを使ってみよう
リンクをコピーしました

putsメソッドはターミナルに文字列を表示したい時に使うメソッドです。
メソッドの返り値は「nil」になります。
またオブジェクトはto_sメソッドで文字列に変換されます。

以下のようなコードを実行してみましょう。

ruby
1
2
3
4
5
6
puts "こんにちは!"
puts "私の名前はプログラマンです。"

こんにちは!
私の名前はプログラマンです。
=> nil

このように改行されてターミナルに表示されます。
ただターミナルに表示されるだけなので返り値はnilとなります。
何もオブジェクトに対し変化を与えていませんもんね。

もちろん変数に対しても使えます。
その際は変数の中身が表示されます。

ruby
1
2
3
4
5
name = "プログラマン"
puts name

プログラマン
=> nil

この時putsメソッドは同時に複数の変数を指定することもできます。

ruby
1
2
3
4
5
6
7
hello ="こんにちは"
name = "プログラマン"
puts hello, name

こんにちは
プログラマン
=> nil

注意すべき点は直接文字列などを複数に指定できないことです。

putsメソッドのようなメソッドを出力メソッドと呼びます。
では返り値がnilになる出力メソッドは一体どのような時に使うのでしょうか?

putsメソッドを使うときって?
リンクをコピーしました

プログラミングのコードを書いている時、どのような結果が返ってくるのか確認したい時があります。
そんな時にputsメソッドなどを使ってデバッグを行います。

ruby
1
2
3
4
5
6
7
8
9
10
array = ["cat", "dog"]
array << "bird"

# 配列にちゃんと追加されているかの確認
puts array

cat
dog
bird
=> nil

上の例のように配列を作ってその後に1つの要素を配列に追加するコードを書きました。
このコードで本当に追加されてるのか確認したい時がありますよね。
そんな時にputsメソッドでこの配列オブジェクトを出力すると中身がターミナルに表示され、コードの結果を確認することができます。

putsメソッド以外の出力メソッド
リンクをコピーしました

このようにターミナルに出力をするためのメソッドを標準出力メソッドと呼びます。
では標準出力メソッドは他にもあるのでしょうか?

rubyにはputsの他にも標準出力メソッドが用意されています。
それぞれ特徴があるので覚えておきましょう。

1. printメソッド
リンクをコピーしました

printメソッドはputsメソッド同様、オブジェクトをコンソールに文字列として出力します。
返り値はnilです。
putsメソッドとの違いは改行がつかないことです。

ruby
1
2
3
4
5
6
print "こんにちは!"
print "私はプログラマンです"

# 改行されずに出力される
こんにちは!私はプログラマンです
=> nil

2. pメソッド
リンクをコピーしました

ruby
1
2
3
4
5
6
7
8
9
10
11
p "こんにちは!"
p "私はプログラマンです。"
p 1
p "2"

# 最後の行の"2"が返り値となる
"こんにちは!"
"私はプログラマンです"
1
"2"
=>"2"

putsメソッドなどに対し、pメソッドは値の型や構造なども確認したい時に使います。
文字列オブジェクトであれば""に囲まれて返ってきますし、数値オブジェクトであれば""に囲まれずに返ってくるので、どんな型のオブジェクトかも確認したい時に便利です。
返り値はオブジェクト自身になります。

他にも出力メソッドはありますが、主に使われるのは上の3つなので、これだけ覚えておけば良いでしょう。

その他の違い
リンクをコピーしました

上に書いた特徴以外にも違いがあります。
putsメソッドとprintメソッドのその他の違いをみてみましょう。

配列の出力
リンクをコピーしました

putsで配列オブジェクトを出力すると1つ1つの要素が改行されて出力されます。
それに対し、printメソッドを使い出力をすると配列を定義した時のような形で文字列に変換されて出力されます。

ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
array = ["cat", "dog"]

# putsの場合
puts array

cat
dog
=> nil

# printの場合
print array

["cat", "dog"]=> nil

ちなみにハッシュの場合はどちらも同じく文字列として出力されます。

ruby
1
2
3
4
5
6
7
8
hash = {name: "プログラマン", height: 170}

puts hash
{:name=>"プログラマン", :height=>170}
=> nil

print hash
{:name=>"プログラマン", :height=>170}=> nil

ちなみに何でputではなくputsとsが付くのでしょう?
putsメソッドはto_sメソッドで文字列に変換されました。
つまりputsのsはstringのsを表します。
実際はput stringという意味だったんですね。

まとめ

putsなどの出力メソッドはデバックをするときに主に使用しますが、オブジェクトを改行をして出力したい時はputs、改行なしで出力をするならprintを使うと便利ですと覚えておきましょう!