【Ruby】データ型(数値・文字列・論理)と出力方法
整数
整数は下記の様に記述します。
num = 1234 # 正の整数
num = -1234 # 負の整数
桁数の多い数値をわかりやすく表現したい場合には
数値の途中に区切り文字としてアンダーバーを使うことができます。
num = 1_230_000_000 # 1,230,000,000
puts num
○進数
2 進数、8 進数、10 進数、16進数として指定するには
それぞれ、0b, 0o, 0d, 0x とします。
num = 0b11000100 # 2進数 (0bで始まる数値は 2進数とみなされる)
num = 0o777 # 8進数 (0oで始まる数値は 8進数とみなされる)
num = 0d1234 # 10進数 (0dで始まる数値は10進数とみなされる)
num = 0xffff # 16進数 (0xで始まる数値は16進数とみなされる)
浮動小数点数
浮動少数点数は下記の様に記述します。
num = 1.234 # 浮動小数点数
num = 1.2e3 # 浮動小数点数(指数表記) 1.2 × 103
論理型
論理値(Boolean)は、true または false で表します。
bool = true
bool = false
文字列
文字列は、ダブルクォート(“)、またはシングルクォート(')で囲みます。
str = "Hello world"
str = 'Hello world'
ダブルクォート(“)で囲んだ文字列中では、シングルクォート(')を
シングルクォート(')で囲んだ文字列中では、ダブルクォート(“)を使うことができます。
また、ダブルクォート(“)で囲んだ文字列中で、ダブルクォート(“)を
シングルクォート(')で囲んだ文字列中で、シングルクォート(')を使いたい場合には、
バックスラッシュ(\)を引用符の前に記述するとエスケープすることができます。
str = "\"I'll be back.\""
puts str
str = '"I\'ll be back."'
puts str
ダブルクォート(“)で囲んだ文字列中では、
バックスラッシュ記法や、式展開を使うことができます。
エスケープシーケンス
ダブルクォーテーション(“)で囲んだ文字列中では、
バックスラッシュ(\)を用いて、下記のエスケープシーケンスを使うことができます。
\t : タブ(TAB:0x09)
\v : 垂直タブ(VT:0x0b)
\n : 改行(ラインフィード:LF:0x0a)
\r : キャリッジリターン(CR:0x0d)
\f : フォームフィード(FF:0x0c)
\b : バックスペース(BS:0x08)
\a : ベル(BEL:0x07)
\e : エスケープ(ESC:0x1b)
\s : 空白(SPC:0x20)
\\ : バックスラッシュ(\)
\改行 : 改行(LF:0x0a)
\nnn : 8進表記文字(nは0~7)
\xnn : 16進表記文字(nは0~f)
\unnnn : ユニコード文字nnnn (Ruby 1.9~)
\u{nnnn} : ユニコード文字nnnn (Ruby 1.9~)
\cx : コントロール文字(xはASCII文字)
\C-x : コントロール文字(xはASCII文字)
\M-x : メタ文字(xはASCII文字)
\M-\C-x : メタコントロール
式展開
文字列の中では、#{式} の形式で 式展開 することができます。
name = "Hoge"
puts "My name is #{name}" #=> My name is Hoge
x = 2; y = 3
puts "Answer is #{ x * y }" #=> Answer is 6
式が変数で、@ や $ で始まる場合は、{ } を省略することができます。
puts "My name is #{@name}"
puts "My name is #@name"
式展開を抑止するには、# の前にバックスラッシュ(/)を書きます。
コマンド出力
バッククォート(`)で囲まれた文字列は、バックスラッシュ記法や式展開が行われた後、
コマンド出力として実行され、コマンドの実行結果が文字列として返されます。
puts `date` # => 現在の日付: 2015/09/02
コマンドの終了ステータスを得るには、$? を参照します。
date = `date`
status = $?
ヒアドキュメント
HTML文として複数行をまとめて表示させたい時には、
ヒアドキュメントの構文を用いることで出力させることができます。
ヒアドキュメントの識別子としては、
アンダーバー(_)を含む半角英数字(最初の文字は数値以外)であれば使うことができます。
print <<END_OF_STRING
This is Tokyo.
This is Osaka.
END_OF_STRING
最後の識別子のみの行は、行頭や行末にスペースを入れることができません。
スペースを入れるとエラーとなります。
ただし、<<-識別子 の構文を使うと行頭にはスペースを入れることができます。
print <<-END_OF_STRING
This is Tokyo.
This is Osaka.
END_OF_STRING
識別子をダブルクォート(“)、シングルクォート(')、バッククォート(`)で囲むと、
それぞれで囲まれた文字列の様に振る舞います。
ただし、"…" の中での " や、’…’ の中での ' は、エスケープする必要はありません。
name = "hoge"
print <<EOS
My name is #{name}.
EOS
name = "hoge"
print <<"EOS"
My name is #{name}.
EOS
name = "hoge"
print <<'EOS'
My name is #{name}.
EOS
print <<`EOS`
date
EOS
一度に複数のヒアドキュメントを使用することもできます。
print <<FIRST, <<SECOND
This is the first string.
FIRST
This is the second string.
SECOND