2.9 ruby的控制结构
2018-12-17 本文已影响0人
808cb3be8e58
1、条件判断语句
(1)if 如果case1条件为true,则执行code1(执行完case1,条件判断语句结束,不会再去判断case2条件是否为true)。如果case1条件为false,接着判断case2条件,若为true,执行code2,若为false,则执行else子句中的code3。
#需要注意的是elsif,不是elseif
if case1
code1...
elsif case2
code2...
else
code3...
end*
举例:
#定义一个变量,赋值为6
irb(main):034:0> i = 6
=> 6
#i的值为6,满足第一个条件,则执行puts "我是#{i},我大于1",之后的条件即使符合也不会再判断
irb(main):035:0> if i > 1
irb(main):036:1> puts "我是#{i},我大于1"
irb(main):037:1> elsif i > 3
irb(main):038:1> puts "我是#{i},我大于3"
irb(main):039:1> elsif i > 5
irb(main):040:1> puts "我是#{i},我大于5"
irb(main):041:1> else
irb(main):042:1* puts "我是#{i},我以上条件都不符合"
irb(main):043:1> end
我是6,我大于1
只有一条语句判断时,也可以将if语句写成一行
irb(main):046:0> puts "hello,我在输出" if 2>1
#当if后面的条件语句为true时,执行if前面的语句
hello,我在输出
=> nil
#当if后面的条件语句为false时,不执行前面的语句
irb(main):047:0> puts "条件为false" if 2<1
=> nil
(2)unless 如果case1条件为false,则执行code1,如果为true,不执行,刚好与if语句相反。
unless case1
code1...
end
举例:
irb(main):048:0> unless 1 > 2
irb(main):049:1> puts "hello,当条件语句为fasle时,我应该输出"
irb(main):050:1> end
hello,当条件语句为fasle时,我应该输出
2、循环语句
(1)while 如果case1为true,code1会循环执行若干次,直到case1为false时停止循环。case1不能一直为true,不然会形成死循环。
while case1
code1...
end
举例:
irb(main):056:0> i = 0
=> 0
irb(main):057:0> while i < 5
irb(main):058:1> puts "输出数字:#{i}"
irb(main):059:1> i += 1
irb(main):060:1> end
输出数字:0
输出数字:1
输出数字:2
输出数字:3
输出数字:4
=> nil
(2)for...in 后面跟一个范围或者数组,相当于遍历数组,
irb(main):064:0> for i in 0..4
irb(main):065:1> puts "i的值为#{i}"
irb(main):066:1> end
i的值为0
i的值为1
i的值为2
i的值为3
i的值为4
=> 0..4
相当于下面的表达式,在ruby中一般用each方法,for...in用法了解一下即可
irb(main):073:0> (0..4).each do |i|
irb(main):074:1* puts "i的值为#{i}"
irb(main):075:1> end
i的值为0
i的值为1
i的值为2
i的值为3
i的值为4
=> 0..4
(3)break、next
- break跳出循环
- next跳过本次循环,进入下一次循环
#当i = 3时,会进入if,执行break语句跳出循环,下面的语句不会执行
irb(main):076:0> for i in 0..4
irb(main):077:1> if i == 3
irb(main):078:2> break
irb(main):079:2> end
irb(main):080:1> puts "i的值为#{i}"
irb(main):081:1> end
i的值为0
i的值为1
i的值为2
#当i = 3时,会进入if,执行next语句跳过本次循环,进入下一次循环,所以不会输出“i的值为3
irb(main):088:0> for i in 0..4
irb(main):089:1> if i == 3
irb(main):090:2> next
irb(main):091:2> end
irb(main):092:1> puts "i的值为#{i}"
irb(main):093:1> end
i的值为0
i的值为1
i的值为2
i的值为4
=> 0..4
#每次循环数字会加1,当i = 3时,先执行完puts语句,再进行if语句的判断。符合大于2的条件,执行break跳出循环。
irb(main):002:0> while i < 5
irb(main):003:1> puts "输出数字:#{i}"
irb(main):004:1> if i > 2
irb(main):005:2> break
irb(main):006:2> end
irb(main):007:1> i += 1
irb(main):008:1> end
输出数字:0
输出数字:1
输出数字:2
输出数字:3