2-2-3 pメソッドとクォーテーション
pメソッド
pメソッドはRuby標準のデバッグ用メソッドです。
デバッグとは、記述したプログラムの動作が意図する通りに動いているかを確かめることです。
体験では数値の1
と文字列の'1'
のRuby内部での取り扱いの違いを確かめるためにirbを利用しました。
p
メソッドはputs
メソッドと似ていますが、puts
メソッドは単に表示することに主眼が置かれているのに対し、p
メソッドはデバッグ用に文字列ならダブルクォーテーションで修飾して出力する違いがあります。
クォーテーションの種類
p
メソッドによる文字列の出力結果ではダブルクォーテーションで文字列が囲まれていました。
一方、これまで記述してきたプログラムでは、シングルクォーテーションで文字列を囲んでいました。
この違いは何なのでしょうか?
通常の文字列を囲むには、基本的にどちらのクォーテーションでも問題ありません。
しかしコンピュータが扱いにくい特別な意味を持つ文字列を扱いたい場合に困る場面があります。
最も分かりやすいのはシングルクォーテーションを文字列として表示したい場合はどうすれば良いでしょうか。
この場合いくつかの方法がありますが、ダブルクォーテーションでシングルクォーテーションを囲むことでシングルクォーテーションを文字列として認識させることができます。
同様に、ダブルクォーテーションを文字列として表示したい場合には、シングルクォーテーションで囲むことで実現できます。
実はその他にもダブルクォーテーションとシングルクォーテーションの違いがありますが、詳細は後続の章で解説します。
データ型について
Rubyの特徴はオブジェクト指向言語です。先ほど表示した数値の1
も文字列の'1'
も、Ruby内部ではオブジェクトとして取り扱われています。
ではこの、オブジェクトの種類である数値や文字列をRuby内部でどう表現されているかを知る方法はあるのでしょうか。
オブジェクトの種類を知るためにはオブジェクトにドットをつなげてclass
メソッドを呼ぶことで確認することができます。
1.class
とすることで数値1
のオブジェクトの種類を、'1'.class
とすることで文字列'1'
のオブジェクトの種類をirb上で確認してみると以下のようになります。
irb(main):001:0> 1.class => Integer irb(main):002:0> '1'.class => String
実行結果を見ると、数値1
はInteger
、文字列'1'
はString
となっています。
この実行結果から分かる通り、Ruby内部では、数値1
というオブジェクトの種類はInteger
と認識され、文字列'1'
というオブジェクトの種類はString
と認識されます。
Rubyではclass
メソッドを使って、オブジェクトの種類を簡単に確認することができます。
このように、オブジェクトの種類のことをクラスやデータ型と呼びます。クラスの概念についての詳細は後続の章でより詳細に解説します。