我们的日常生活包含一组条件,其作用是将我们定义为个人,这些条件从第一天开始就被介绍给我们:
- 基本的
if
表达式
if user.status == "online"
puts "hello world"
end
Ruby语法提供了必要的元素,可以将任何条件编程序列转换为可管理且易于阅读的代码行。
IF / ELSIF / ELSE声明
if
表达式充当问题,结果由该问题的答案决定,在elsif
和else
语句的帮助下,可能性是无限的:
if user.mood == "happy"
puts "time to study"
elsif user.mood == "sad"
puts "time to play"
else
puts "time to code"
end
if
语句评估我们放在他前面的任何内容,如果结果返回true
则条件被接受并且执行其中的代码段,如果结果返回false
或nil
(空),则在此继续下一个条件case elsif
(else if)并使用相同的过程,如果elsif
的结果为true
,则应输出消息"time to play"
,最后如果没有条件为true
,则返回else
语句被执行。
如果作为修改器
与上面的示例一样,这里的区别在于,首先我们需要编写“答案”或要执行的代码,然后传递if
语句,后跟“问题”或条件,如果结果为true
,则将其执行:
puts "it's true!" if 1 > 0
# returns "it's true"
alarm.sound = off if current_day = 'saturday' || current_day = 'sunday'
除非声明
与if
语句检查true
值的方法不同, unless
语句相反,并检查false
或nil
unless cellphone.battery.percentage > 14
cellphone.start_charge
end
我们可以结合的unless
只与表达else
语句:
unless job.isDone?
puts "go back to work"
else
puts "good job!"
end
job.isDone = true
# returns "good job!"
无需修改
就像他的亲戚if
, unless
可以用作具有相同目的的修饰符,但仅在结果为false
或nil:
时才执行nil:
- 例子:
puts "it's not right!" unless 4 > 3
# 4 > 3 is true so code doesn't execute
alarm.sound = on unless current_time < "7:00am"
案例/何时/其他声明
case
语句是另一个Ruby条件,可以用作if / unless
的替代方案,当存在多种可能的结果时,它最常用于结构化和创建有效的代码:
case fuel_level
when 71 ... 100
puts "Fuel Level: High"
when 41 ... 70
puts "Fuel Level: Medium"
when 21 ... 40
puts "Fuel Level: Low"
else
puts "Fuel Level: Very Low"
end
fuel_level: 12
# returns "Fuel Level: Very Low"
case
是要求值的表达式, when
表达式包含每个条件,如果条件返回true
,则执行内部代码并以end
语句end
,如果没有条件,则else
表达式将作为要执行的默认条件在这种情况下,条件返回true