我们的日常生活包含一组条件,其作用是将我们定义为个人,这些条件从第一天开始就被介绍给我们:

  • 基本的if表达式
if user.status == "online"
  puts "hello world"
end

Ruby语法提供了必要的元素,可以将任何条件编程序列转换为可管理且易于阅读的代码行。

IF / ELSIF / ELSE声明

if表达式充当问题,结果由该问题的答案决定,在elsifelse语句的帮助下,可能性是无限的:

if user.mood == "happy"
  puts "time to study"
elsif user.mood == "sad"
  puts "time to play"
else 
  puts "time to code"
end

if语句评估我们放在他前面的任何内容,如果结果返回true则条件被接受并且执行其中的代码段,如果结果返回falsenil (空),则在此继续下一个条件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 语句相反,并检查falsenil

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!"

无需修改

就像他的亲戚ifunless可以用作具有相同目的的修饰符,但仅在结果为falsenil:时才执行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