Rubyで文字や文字列を出力するメソッドについて

目次

Rubyで、文字や文字列をコンソールに出力するメソッドについてまとめました。

Rubyの出力メソッド

Rubyには、文字と文字列を出力メソッドがいくつかあります。

今回は、これらのメソッドの中で、コンソールに出力するものについてまとめました。

今回使用するRubyのバージョンは、Ruby2.2.3です。

メソッドの一覧

私が調べた限りのメソッドの一覧です。

  • putc
  • puts
  • print
  • printf
  • p

それぞれについて、詳しく見ていきます。

メソッドの説明は公式のドキュメントを参考にしています。

putcメソッド

このメソッドは、引数が0〜255の整数ならば、それに対応する文字を出力します。もし、文字列が引数として渡された場合は、先頭の1byteを出力します。

このことから、putcメソッドは文字を出力するメソッドであるといえます。

サンプルを下記にまとめておきます。

putc "a"
putc "bcde"
putc 48

出力は下記のとおりです。

ab0

putcメソッドは改行をしないので出力がつながっています。

このように、たとえ文字列を渡しても先頭の1byteのみが取り出されて出力されます。

putsメソッド

このメソッドは、引数と改行を順番に出力するメソッドです。

引数が文字列であれば、その文字列を出力して最後に改行をします。このとき、文字列の末尾に改行があれば、その改行のみを行い、メソッドのほうで新たに改行することはありません。

引数が配列であれば、要素と改行を交互に繰り返します。

それ以外の引数の場合は、そのオブジェクトをto_aryによって配列にして、to_sメソッドで文字列にして出力します。

サンプルを下記にまとめておきます。

puts "abc"
puts "defn"
puts ["abc", "def"]

出力は下記のとおりです。

abc
def
abc
def

プログラムの1行目では、文字列の出力をしています。

2行目では、末尾に改行がある文字列を引数としてputsメソッドを実行して、改行が行われないことを確認しています。

3行目では、配列を引数としています。

printメソッド

このメソッドは、引数を出力するメソッドです。

引数が文字列の場合は、そのまま出力します。最後に改行をしません。

引数が文字列以外の場合は、to_sメソッドで文字列にしてから出力します。

putsメソッドと違って最後に改行をせず、文字列以外が引数の場合はそのまま文字列にして出力します。

サンプルを下記にまとめておきます。

print "abc"
print "defn"
print ["abc", "def"]

出力は下記のとおりです。

abcabc
["abc", "def"]

最後に改行をしないので、一部出力がつながっています。

プログラムの1行目では、文字列の出力をしています。最後に改行がないので、2行目と出力がつながっています。

2行目では、最後に改行文字を追加した文字列を引数として、最後に改行をするようにしています。

3行目では、文字列以外の引数として、配列を引数としています。

printfメソッド

printfメソッドは、C言語のprintf関数と同じようにフォーマットを指定して出力ができるメソッドです。

出力に関して、引数は全て文字列に変換されて出力されます。

フォーマットの指定できる種類はたくさんあるので、ドキュメントを参考にしてください。

Kernel.#format

一部の違いはありますが、C言語の関数のフォーマットとほとんど同じことができます。

pメソッド

主にデバッグ用に用いるメソッドです。

putsメソッドやprintメソッドでは気づかないような、クラス間の差異を見つけることができます。

例えば、putsメソッドでは文字列を出力させるときに、そのまま文字列を出力しますが、pメソッドでは文字列であることがわかるように出力を"“ダブルクォーテーションで囲ってくれます。

感想

今回、コンソールに出力するメソッドについてまとめました。

使い分けとしては、デバッグ用にはpメソッド、通常の出力にはpメソッドかprintメソッド、出力の細かい指定をしたいときはprintfメソッドを使うのがいいと思います。