Rubyの各種構文
val = 1 if val == 1 print "val == 1\n" elsif val == 2 print "val == 2\n" else print "else\n" end unless val == 1 print "val != 1\n" else print "val == 1\n" end if val == 1 then print "val == 1\n" else print "else\n" end
実行結果
val == 1 val == 1 val == 1
val = 1 print "val == 1\n" if val == 1 print "val != 1\n" unless val == 1
実行結果
val == 1
if true print "true\n" end unless false print "false\n" end val = ( 1 == 1 ) if val == true print "true\n" end
実行結果
true false true
val = 3 if val = 1 print "true\n" end
実行結果
./sample.rb:5: warning: found = in conditional, should be == true
val = 'a'
case val
when 'a'
print "val = a\n"
when 'b'
print "val = b\n"
when 'c'
print "val = c\n"
else
print "else\n"
end
実行結果
val = a
arr = [1, 2, 3, 4, 5]
for i in arr
print "#{i},"
end
print "\n"
for i in 1..5
print "#{i},"
end
print "\n"
実行結果
1,2,3,4,5, 1,2,3,4,5,
arr = [1, 2, 3, 4, 5]
arr.each do |i|
print "#{i},"
end
print "\n"
[1, 2, 3, 4, 5].each do |i|
print "#{i},"
end
print "\n"
(1..5).each do |i|
print "#{i},"
end
print "\n"
1.upto(5) do |i|
print "#{i},"
end
print "\n"
1.upto(5) { |i|
print "#{i},"
}
print "\n"
実行結果
1,2,3,4,5, 1,2,3,4,5, 1,2,3,4,5, 1,2,3,4,5, 1,2,3,4,5,
3.times do |i|
print "#{i},"
end
print "\n"
2.downto(0) do |i|
print "#{i},"
end
print "\n"
1.step(5, 2) do |i|
print "#{i},"
end
print "\n"
実行結果
0,1,2, 2,1,0, 1,3,5,
未整理
未整理
# x = a / b
print "a? "
a = gets
begin
if a == nil
raise "no input"
else
# String->Integer
a = a.to_i
end
rescue => evar
print "invalid value (#{evar})\n"
a = 0
else
print "valid value\n"
ensure
print "a = #{a}\n"
end
print "b? "
b = gets
begin
# String->Integer
b = b.to_i
x = a / b
rescue ZeroDivisionError
STDERR.print "divided by 0\n"
x = 0
ensure
print "b = #{b}\n"
print "a / b = #{x}\n"
end
実行例
a? 5 valid value a = 5 b? 0 divided by 0 b = 0 a / b = 0
a = nil
begin
print "a? "
a = gets.to_i
if a < 0
raise "negative"
elsif a == 0
raise "zero"
end
rescue => evar
print "invalid value (#{evar})\n"
retry
ensure
print "a = #{a}\n"
end
実行例
a? 0 invalid value (zero) a? -5 invalid value (negative) a? 5 a = 5