好的!以下是关于 Ruby 判断(条件语句)的详细讲解。Ruby 提供了多种方式来实现条件判断,用于控制程序流程。我会介绍主要的判断结构(如 ifunlesscase),结合中文示例和实际场景,帮助你掌握 Ruby 判断的用法。


1. 基本概念

判断语句根据条件(返回 truefalse)决定执行哪部分代码。Ruby 中的条件可以是:

  • 比较运算(==, <, > 等)
  • 逻辑运算(&&, ||, ! 等)
  • 方法返回值(例如 .empty?

在 Ruby 中,只有 nilfalse 被视为假,其他值(包括 0)都为真。


2. if 语句

语法

if 条件
  # 条件为真时执行
elsif 条件2
  # 条件2 为真时执行
else
  # 都不满足时执行
end

示例

age = 20
if age >= 18
  puts "你是成年人"
elsif age >= 13
  puts "你是青少年"
else
  puts "你是儿童"
end

输出:你是成年人

单行写法

puts "成人" if age >= 18  # 成人

注意

  • elsif 可以有多个。
  • 条件不需要括号,但加上更清晰:
  if (age > 0 && age < 100)
    puts "有效年龄"
  end

3. unless 语句

语法

unlessif 的反向版本,当条件为假时执行代码。

unless 条件
  # 条件为假时执行
else
  # 条件为真时执行
end

示例

score = 85
unless score < 60
  puts "及格了!"
else
  puts "不及格"
end

输出:及格了!

单行写法

puts "不及格" unless score >= 60  # 无输出

注意

  • unless 适合表达“除非”的逻辑,代码更自然:
  unless name.nil?
    puts "名字是 #{name}"
  end

4. case 语句

语法

case 用于多条件匹配,类似其他语言的 switch

case 值
when 条件1
  # 条件1 匹配时执行
when 条件2
  # 条件2 匹配时执行
else
  # 都不匹配时执行
end

示例

grade = "A"
case grade
when "A"
  puts "优秀"
when "B"
  puts "良好"
when "C"
  puts "及格"
else
  puts "需要努力"
end

输出:优秀

范围匹配

score = 75
case score
when 90..100
  puts "优秀"
when 70..89
  puts "良好"
else
  puts "继续加油"
end

输出:良好

注意

  • when 后的条件可以用值、范围、正则等。
  • 不需要 break,Ruby 自动跳出。

5. 三元运算符

语法

条件 ? 值1 : 值2 是简洁的单行判断。

示例

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

注意

  • 适合简单条件,避免复杂嵌套。

6. 逻辑运算符与判断

逻辑运算符(&&, ||, !)常用于组合条件。

示例

temperature = 25
if temperature > 20 && temperature < 30
  puts "天气很舒适"
end
# 天气很舒适

name = ""
unless name.empty? || name.nil?
  puts "名字有效"
end
# 无输出

7. 判断中的中文支持

Ruby 支持在判断中使用中文变量和字符串:

示例

天气 = "晴天"
if 天气 == "晴天"
  puts "今天适合出门"
elsif 天气 == "雨天"
  puts "记得带伞"
else
  puts "天气未知"
end

输出:今天适合出门


8. 实践案例

案例 1:学生成绩判断

class Student
  def initialize(姓名, 分数)
    @姓名 = 姓名
    @分数 = 分数
  end

  def 成绩等级
    case @分数
    when 90..100
      "优秀"
    when 80..89
      "良好"
    when 60..79
      "及格"
    else
      "不及格"
    end
  end
end

学生 = Student.new("张三", 85)
puts "#{学生.成绩等级} - #{@姓名}"  # 良好 - 张三

案例 2:天气建议

温度 = 15
天气 = "雨天"

建议 = if 温度 > 20 && 天气 == "晴天"
        "适合户外活动"
      elsif 天气 == "雨天"
        "记得带伞"
      else
        "待在室内吧"
      end
puts 建议  # 记得带伞

案例 3:简单登录验证

用户名 = "admin"
密码 = "1234"

if 用户名 == "admin" && 密码 == "1234"
  puts "登录成功"
else
  puts "用户名或密码错误"
end

输出:登录成功


9. 注意事项

  • 真假值:Ruby 中 0 是真值,需注意:
  if 0
    puts "这是真的"  # 这是真的
  end
  • 优先级:逻辑运算符有优先级,建议用括号明确:
  puts true || false && false  # true
  puts (true || false) && false  # false
  • 简洁性:单行 ifunless 适合简单逻辑,避免滥用。

下一步

  • 练习:告诉我你想用哪种判断结构(ifcase 等),我可以设计一个例子。
  • 问题解答:对判断用法有疑问吗?直接问我!
  • 深入学习:想了解条件判断在循环或异常处理中的应用吗?我可以继续讲解。

你现在想做什么?写代码、问问题,还是其他?