Rubyで、文字や文字列をコンソールに出力するメソッドについてまとめました。
Rubyの出力メソッド
Rubyには、文字と文字列を出力メソッドがいくつかあります。
今回は、これらのメソッドの中で、コンソールに出力するものについてまとめました。
今回使用するRubyのバージョンは、Ruby2.2.3です。
メソッドの一覧
私が調べた限りのメソッドの一覧です。
- putc
- puts
- 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関数と同じようにフォーマットを指定して出力ができるメソッドです。
出力に関して、引数は全て文字列に変換されて出力されます。
フォーマットの指定できる種類はたくさんあるので、ドキュメントを参考にしてください。
一部の違いはありますが、C言語の関数のフォーマットとほとんど同じことができます。
pメソッド
主にデバッグ用に用いるメソッドです。
putsメソッドやprintメソッドでは気づかないような、クラス間の差異を見つけることができます。
例えば、putsメソッドでは文字列を出力させるときに、そのまま文字列を出力しますが、pメソッドでは文字列であることがわかるように出力を"“ダブルクォーテーションで囲ってくれます。
感想
今回、コンソールに出力するメソッドについてまとめました。
使い分けとしては、デバッグ用にはpメソッド、通常の出力にはpメソッドかprintメソッド、出力の細かい指定をしたいときはprintfメソッドを使うのがいいと思います。