Ruby脚本条件判断入门:让程序自己做选择

ref="/tag/134/" style="color:#EB6E00;font-weight:bold;">脚本的时候,经常会遇到需要根据不同情况执行不同操作的场景。比如,检查用户输入是否合法、判断文件是否存在、或者根据成绩划分等级。这时候就得靠条件判断来让程序“动脑筋”。

最基本的 if 判断

Ruby 里的 if 就像生活中的“如果”。比如说,如果外面下雨,就带伞;否则就不带。代码里是这样写的:

weather = "rainy"

if weather == "rainy"
  puts "记得带伞"
end

只有当 weather 的值是 "rainy" 时,才会输出提醒。简单直接。

加上 else 处理相反情况

有时候不光要处理“是”,还得处理“不是”。比如判断一个数是不是正数:

num = -5

if num > 0
  puts "这是一个正数"
else
  puts "这不是一个正数"
end

不管数值是多少,总有一条消息会被打印出来。

用 elsif 应对多种可能

现实中的选择往往不止两个。比如根据分数给评级:

score = 85

if score >= 90
  puts "等级:A"
elsif score >= 80
  puts "等级:B"
elsif score >= 70
  puts "等级:C"
else
  puts "等级:D"
end

程序会从上往下逐个判断,一旦满足某个条件,就执行对应的代码,后面的就不再看了。

简洁的三元运算符

当判断逻辑很简单时,可以用一行代码搞定。比如判断是否成年:

age = 18
status = age >= 18 ? "成年人" : "未成年人"
puts status

问号前面是条件,后面紧跟“真时的值”,冒号之后是“假时的值”。看起来紧凑又清楚。

使用 case 进行多分支匹配

当要比较的值固定且种类较多时,case 更清晰。比如根据星期几安排活动:

day = "周末"

case day
when "工作日"
  puts "上班打卡"
when "周末", "节假日"
  puts "放松休息"
else
  puts "未知时间"
end

一个 when 可以匹配多个值,结构一目了然。

条件取反与 nil 判断

有时候需要反过来想问题。比如变量有没有值?可以用 unless,意思是“除非”:

name = nil

unless name
  puts "名字还没设置"
end

这比写 if !name 更贴近自然语言。同样,if name 可以用来确认变量有值再处理。

小技巧:条件判断也可以返回值

Ruby 中几乎所有东西都有返回值,包括 if 表达式。可以直接把结果赋给变量:

temperature = 30
advice = if temperature > 25
           "穿短袖"
         else
           "加件外套"
         end

puts advice  # 输出:穿短袖

这种写法在构造动态内容时特别方便。