プログラミング言語Ruby 3章 データ型とオブジェクト
プログラミング言語を理解するためには、どのようなデータをどのように処理できるのかを知っておかなければならない。
数値
Rubyのすべての数値オブジェクトはNumericのインスタンスになっている。
すべての数値オブジェクトはイミュータブル(変更できない)である。
メソッドに数値オブジェクトの参照を渡す場合でも、メソッドがオブジェクトを書き換えてしまうのではないかという心配は不要。
整数リテラル
整数値がFixnumクラスの範囲に収まる場合(31ビット)にはFixnum、そうでなければ任意のサイズの整数をサポートするBignumになる。
先頭と末尾を除き、アンダースコア(_)をつけることができる。3桁ごとのセパレータに使われることがある。(見たことない)
0 123 12345678901234567890 1_000_000_000
基数を指定することもできる。
- 16進
- 先頭が0xまたは0X
- 2進
- 先頭が0bまたは0B
- 8進
- 先頭が0oまたは0O、Cと同様に先頭の0の後に特に文字が付いていない場合
0377 # 255の8進表現 0b1111_1111 # 255の2進表現 0xFF # 255の16進表現
文字列
文字列はミュータブル(変更可能)なStringクラスによって表現する。
文字列リテラル
シングルクォート
'これは単純なRuby文字列リテラルである' 'O\'Reillyの本を読みませんか?' 'この文字列リテラルの末尾は、単一のバックスラッシュ:\\'
ダブルクォート
"360°=#{2*Math::PI} ラジアン " # "360°=6.28318530717959 ラジアン"
文字列リテラルのセパレータ
qやQの後ろの最初の文字がセパレータになる。
また、ペアになっているセパレータを使う場合(XMLの<>など)、きれいにネストされた形で使っている限り、リテラルの中のセパレータをエスケープする必要はない。
# XMLは<>のペアを使う %<<book><title>プログラミング言語Ruby</title></book>> # 正しい # 式はネストされたかっこのペアを使う %((1+(2*3)) = #{(1+(2*3))}) # これも正しい %(対応の取れないかっこ \( にはエスケープが必要) # この場合はエスケープが必要
ヒアドキュメント
先頭を「<<」または「<<-」で示し、すぐ後ろに末尾のセパレータとして使われる識別子または文字列を置く。
document = <<HERE これは文字列リテラル 2行あるが唐突に終わる… HERE
バッククォートによるコマンド実行
バッククォート(`)で文字の並びを囲むと、Kernel.` という特殊なメソッドに渡す。
このクラスのメソッドは文字列をOSシェルコマンドとして実行し、コマンドの出力を文字列の形式で返す。
%xでも同じ。
`ls` %x[ls]