数値
数値は整数と浮動小数点数がある.
irb> 42 => 42 irb> -42 => -42 irb> 3.14 => 3.14 irb> 6.62e-34 => 6.62e-34
読みやすいようにアンダースコアを付けることができる
irb> 100_000_000 => 100000000
クラスはFixNumとBigNumで,自動的に変換されるらしい.classメソッドを用いると
クラスを調べることができる
irb> 42.class => FixNum irb> (2**32).class => BigNum
文字列
''か""で囲む.""だとエスケープ文字が有効.
irb> 'abcde\n' => 'abcde\\n' irb> "abcde\n" => "abcde\n"
""の中では#{}で変数展開を行うことができる
irb> lang = 'Ruby'
=> "Ruby"
irb> "Hello, #{lang}"
=> "Hello, Ruby"というか,任意の式を展開できる
irb> "1 + 1 = #{1+1}"
=> "1 + 1 = 2"``はコマンドを実行した結果が入る
irb> `echo hoge` "hoge\n"
配列
配列は[]で囲む
irb> ary = [1, 2, 4, 8, 16] => [1, 2, 4, 8, 16] irb> ary[3] => 8
ハッシュ
ハッシュは{}で囲む
irb> hash = {"foo" => "bar", "spam" => "egg"}
=> {"foo"=>"bar", "spam"=>"egg"}
irb> hash["foo"]
=> "bar"
制御構造
if文
if n % 2 == 0 then puts "even" else puts "odd" end
unless文
unlessにしたら逆になる
unless n % 2 == 0 then puts "odd" else puts "even" end
case文
Cのswitch文みたいなもの
month = 7 case month when 12,1,2 then puts "winter" when 3,4,5 then puts "spring" when 6,7,8 then puts "summer" when 9,10,11 then puts "autumn" end
if,unless,caseのthenは省略できる
while文
sum = 0 i = 0 while i <= 10 do sum += i i += 1 end # sum = 55
until文
sum = 0 i = 0 until i > 10 do sum += i i += 1 end # sum = 55
whileやuntilのdoは省略できる
for文
sum = 0 for i in 1..10 sum += i end # sum = 55
後置修飾
if,unless,while,untilは式を修飾することができる
puts "even" if n % 2 == 0
break,next,redo,retry
| break | ループの外へgoto |
| next | 内側の次の繰り返しにgoto |
| redo | 内側の現在の繰り返しにgoto |
| retry | ループの最初にgoto |
break
for i in 0..9
puts i
if i == 5
break
end
endこれを実行すると
0 1 2 3 4 5
next
for i in 0..9
puts i
if i == 5
next
end
endこれを実行すると
0 1 2 3 4 5 6 7 8 9
redo
for i in 0..9
puts i
if i == 5
redo
end
endこれを実行すると
0 1 2 3 4 5 5 . . .
retry
for i in 0..9
puts i
if i == 5
retry
end
endこれを実行すると
0 1 2 3 4 5 0 1 2 3 4 5 . .