更新日:
【Ruby】 putsメソッドを使って出力を確認する方法をマスターしよう!
putsメソッドは、オブジェクトをコンソールに改行を加えた状態で出力するメソッドです。
1
2
3
4
5
6
irb(main):001:0> puts "こんにちは!"
こんにちは!
=> nil
irb(main):002:0> puts "私の名前はプログラマンです。"
私の名前はプログラマンです。
=> nil
putsメソッドは、ターミナルに文字列を表示したい時に使うメソッドです。 メソッドの返り値はnil
になります。 また、オブジェクトはto_sメソッドで文字列に変換されます。
putsメソッドの使い方
この章では、putsメソッドの使い方について解説します。
putsメソッドを使ってみよう
以下のようなコードを実行してみましょう。
1
2
3
4
5
6
puts "こんにちは!"
puts "私の名前はプログラマンです。"
こんにちは!
私の名前はプログラマンです。
=> nil
このように改行されてターミナルに表示されます。
ただターミナルに表示されるだけなので返り値はnilとなります。
何もオブジェクトに対し変化を与えていませんもんね。
もちろん変数に対しても使えます。
その際は変数の中身が表示されます。
1
2
3
4
5
name = "プログラマン"
puts name
プログラマン
=> nil
この時putsメソッドは同時に複数の変数を指定することもできます。
1
2
3
4
5
6
7
hello ="こんにちは"
name = "プログラマン"
puts hello, name
こんにちは
プログラマン
=> nil
注意すべき点は直接文字列などを複数に指定できないことです。
putsメソッドのようなメソッドを出力メソッドと呼びます。
では返り値がnilになる出力メソッドは一体どのような時に使うのでしょうか?
putsメソッドを使うときって?
プログラミングのコードを書いている時、どのような結果が返ってくるのか確認したい時があります。
そんな時にputsメソッドなどを使ってデバッグを行います。
1
2
3
4
5
6
7
8
9
10
array = ["cat", "dog"]
array << "bird"
# 配列にちゃんと追加されているかの確認
puts array
cat
dog
bird
=> nil
上の例のように配列を作ってその後に1つの要素を配列に追加するコードを書きました。
このコードで本当に追加されてるのか確認したい時がありますよね。
そんな時にputsメソッドでこの配列オブジェクトを出力すると中身がターミナルに表示され、コードの結果を確認することができます。
Rubyの用語やコードの読み方が知りたいという方は、こちらの書籍も参考になります。
putsメソッド以外の出力メソッド
このようにターミナルに出力をするためのメソッドを標準出力メソッドと呼びます。
では標準出力メソッドは他にもあるのでしょうか?
rubyにはputsの他にも標準出力メソッドが用意されています。
それぞれ特徴があるので覚えておきましょう。
1. printメソッド
printメソッドはputsメソッド同様、オブジェクトをコンソールに文字列として出力します。
返り値はnilです。
putsメソッドとの違いは改行がつかないことです。
1
2
3
4
5
6
print "こんにちは!"
print "私はプログラマンです"
# 改行されずに出力される
こんにちは!私はプログラマンです
=> nil
2. pメソッド
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メソッドを使い出力をすると配列を定義した時のような形で文字列に変換されて出力されます。
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
ちなみにハッシュの場合はどちらも同じく文字列として出力されます。
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メソッドは、オブジェクトをコンソールに改行を加えた状態で出力するメソッドのこと
- オブジェクトを改行をして出力したい時に使おう
- 改行なしで出力をするならprintを使うと便利!