Rubyの勉強 (2) - 文法
数値
数値は整数と浮動小数点数がある.
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 . .