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

実行結果を見ると、数値1Integer、文字列'1'Stringとなっています。

この実行結果から分かる通り、Ruby内部では、数値1というオブジェクトの種類はIntegerと認識され、文字列'1'というオブジェクトの種類はStringと認識されます。

Rubyではclassメソッドを使って、オブジェクトの種類を簡単に確認することができます。

このように、オブジェクトの種類のことをクラスデータ型と呼びます。クラスの概念についての詳細は後続の章でより詳細に解説します。