整数(Integer)は下記の様に記述します。
num = 1234 // 正の整数 num = -1234 // 負の整数
0d, 0x, 0o, 0b はそれぞれ、10進数、16進数、8進数、2進数を意味します。
num = 0d1234 // 10進数 (0dで始まる数値は10進数とみなされる) num = 0xffff // 16進数 (0xで始まる数値は16進数とみなされる) num = 0o777 // 8進数 (0oで始まる数値は 8進数とみなされる) num = 0b11000100 // 2進数 (0bで始まる数値は 2進数とみなされる)
数値の途中のアンダーバー(_)は無視されます。これは、桁数の多い数値をわかりやすく表現する際に利用されます。
num = 1_230_000_000 // 1,230,000,000
浮動少数点数(Float)は下記の様に記述します。
num = 1.234 // 浮動小数点数 num = 1.2e3 // 浮動小数点数(指数表記) 1.2 × 103
論理値(Boolean)は、true または false で表します。これらは、TrueClass, FalseClass クラスの唯一のインスタンスです。
bool = true bool = false
文字列(String)は、ダブルクォート(")、またはシングルクォート(')で囲みます。
str = "Hello world" str = 'Hello world'
"..." の中では ' を、'...' の中では " を使うことができます。"..." の中で " を、'...' の中で ' を使用するには、バックスラッシュ(\)を用いて引用符をエスケープ(無効化)します。
str = "He said \"I'll be back.\"" str = 'He said "I\'ll be back."'
"..." の中では、後述のバックスラッシュ記法や、式展開を用いることができます。'...' の中では \\ と \' のみが意味を持ちます。
str = "My name is #{name}.\n"
"..." の中では、バックスラッシュ(\)を用いて、下記のエスケープシーケンスを使用できます。
\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 = "Tanaka" puts "My name is #{name}" #=> My name is Tanaka x = 5; y = 3 puts "Answer is #{ x + y }" #=> Answer is 8
式が変数で、@ や $ で始まる場合は、{ } を省略することができます。
puts "My name is #{@name}" puts "My name is #@name"
式展開を抑止するには、# の前にバックスラッシュ(/)を書きます。
puts "You can use \#{expression} notation in the ruby string."
バッククォート(`)で囲まれた文字列は、バックスラッシュ記法や式展開が行われた後、コマンド出力として実行され、コマンドの実行結果が文字列として返されます。
puts `date` # => Thu Sat 18 18:15:47 JST 2013
コマンドの終了ステータスを得るには、$? を参照します。
date = `date` status = $?
ヒアドキュメント(<<識別子)の構文を用いて、複数行の文字列を現すことができます。下記の例では、This is ~ の2行が表示されます。識別子は、アンダーバー(_)を含む半角英数字(最初の文字は数値以外)であれば何でも使用できます。
print <<END_OF_STRING This is Japan. This is America. END_OF_STRING
最後の識別子のみの行は、行頭や行末にスペースを入れることが許されません。ただし、<<-識別子 の構文を用いると、先頭のスペースが許可されます。
print <<-EOS This is Japan. This is America. EOS
識別子をダブルクォート(")、シングルクォート(')、バッククォート(`)で囲むと、それぞれ、"...", '...', `...` で囲まれた文字列の様に振る舞います。ただし、"..." の中での " や、'...' の中での ' はエスケープする必要はありません。
print <<EOS # Same as "EOS" My name is #{name}. EOS print <<"EOS" My name is #{name}. EOS print <<'EOS' You can use #{expression} notation. EOS print <<`EOS` date EOS
一度に複数のヒアドキュメントを使用することもできます。
print <<FIRST, <<SECOND This is the first string. FIRST This is the second string. SECOND