#はじめに
Ruby学習中に、putsメソッド、printメソッド、pメソッドの振る舞いで混乱した時に、「全部文字列を表示するやつだけど、表示され方とか用法が違う」くらいざっくり考えていたので、初歩の初歩 "Hello, Ruby." を細かく解体して考えてみました。
print("Hello, Ruby.\n")
=> Hello, Ruby.
##メソッド Print
メソッドとは、オブジェクトを扱うための手続き
print
Printメソッド。引数をコンソールに出力する。
Kernelモジュールで定義されているため、全てのクラスから参照できる。(Printクラスを参照するための新しいクラスや変数を定義する必要がない)
##引数 ("Hello, Ruby.\n")
引数 = メソッドに渡す情報
( )
引数を囲っている
"Hello, Ruby."
引数の内容。文字列。文字列 (String)オブジェクト。
なお、シングルクォートを使うと、特殊文字が解釈されない。
print('Hello, Ruby.\n')
=>Hello, Ruby.\n
\n
改行文字。\
は、それに続く文字に特別な意味を与える文字。
print("Hello, \"Ruby\".\n")
=>Hello, "Ruby".
###つまるところ
printメソッドに文字列オブジェクトが含まれた情報を渡して、それをコンソールに出力している。
##ついでにpメソッドについて
printメソッドは、引数をコンソールに表示するメソッドのため、戻り値はnillとなる。
pメソッドの戻り値は引数。inspectメソッド(引数を文字列にして返す)の結果に改行を加えて出力される。
irb --simple-prompt
print("Hello, \"Ruby\".\n")
p("Hello, \"Ruby\".\n")
Printメソッドの場合の結果
Hello, "Ruby".
=>nil
Pメソッドの場合の結果
=> "Hello, \"Ruby\".\n"
ご指摘、補足、もっとここ掘って考えた方がいいよ、などありましたらコメントいただけるとありがたいです。
※コメントいただいた通り、ブランクの使い方を誤っていたため、修正いたしました。