写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 # 输出:穿短袖
这种写法在构造动态内容时特别方便。