3-ruby 获取终端输入的值、if语句、unless语句的使用

发布于:2025-09-01 ⋅ 阅读:(31) ⋅ 点赞:(0)

3-ruby 获取终端输入的值、if语句、unless语句的使用

前言

上一篇中大概知悉了 ruby 的基本数据类型,那么下面继续来看看脚本语言经常需要的操作:

  • 获取终端输入的值
  • if语句、unless语句的基本使用

获取终端输入的值

交互模式操作示例

# 1. 通过 gets 方法,获取输入的内容为 hello
irb(main):037:0> a = gets
hello
=> "hello\n"
# 2. 使用 puts a 打印 a 的内容
irb(main):038:0> puts a
hello
=> nil
# 3. 字符串 a 是带有换行符 \n 的,可以使用 .chomp 方法去除
irb(main):039:0> a.chomp
=> "hello"
# 4. 可以使用 to_i 将字符串转为整型
irb(main):040:0> a.chomp.to_i
=> 0
irb(main):041:0>
  • 获取输入值: 使用gets方法从终端获取用户输入,如a = gets会等待用户输入并将结果赋值给变量a

  • 输出值: 使用puts方法输出变量值,如puts a会打印变量a的值

  • 输入值处理:

    • 输入值默认带有换行符\n,可使用chomp方法去除
    • 字符串转整数使用to_i方法,如 a.chomp.to_i

文件模式操作示例

Ruby源文件以.rb为扩展名,如我们创建一个input.rb作为输入示例,如下:

# frozen_string_literal: true

puts "请输入内容:"
# 获取终端输入内容
inputs = gets
# 输出输入内容
puts "输出输入的内容:" + inputs.chomp

执行 input.rb文件,并且输入内容 1000,如下:

# 执行 input.rb 文件,输入 10001
PS > ruby .\input.rb
请输入内容:
10001 
输出输入的内容:10001
  • 代码说明:

    inputs = gets获取输入,puts inputs输出结果

if语句

if语句的定义和使用

基础 if 语句
  • 基本语法:Ruby中if语句不需要分号,以回车换行符为代码分段标志
  • 代码块结束:使用end作为代码块结束标志符
  • 值存在判断:当值本身存在时,表达式即为true
  • 基础if语句格式如下:
if 条件
  # 条件为真时执行的代码
end
  • 示例代码:
# if 基础语句的使用示例
age = 18
if age >= 18
  puts "You are an adult."
end

执行 ruby 如下:

# 执行if语句的示例ruby脚本 if_base.rb
> ruby .\if_base.rb
You are an adult.
if-else 结构
  • 语句格式如下:
if 条件
  # 条件为真时执行
else
  # 条件为假时执行
end
  • 示例代码:
# if-else 语句的使用示例
temperature = 25
if temperature > 30
  puts "It's hot outside!"
else
  puts "It's not too hot."
end
多条件 elsif
  • 语句格式如下:
if 条件1
  # 条件1为真时执行
elsif 条件2
  # 条件2为真时执行
else
  # 其他情况执行
end
  • 示例代码:
# if-elsif-else 语句的使用示例
score = 85
if score >= 90
  puts "A"
elsif score >= 80
  puts "B"  # 这里会输出 "B"
else
  puts "C"
end
单行写法(修饰符形式)
  • 语句格式如下:
代码 if 条件
  • 示例代码:
# 单行写法(修饰符形式)
puts "Hello, World!" if true
逻辑运算符结合

可与 &&(与)、||(或)、!(非)结合使用:

# 逻辑运算符结合
# 可与 &&(与)、||(或)、!(非)结合使用:
age = 18

if age >= 18 && age <= 60
  puts "You are eligible for retirement."
end

if age < 18 || age > 60
  puts "You are not eligible for retirement."
end

is_major = true
if !is_major
  puts "You are not a major."
end
if 作为表达式返回值

Ruby 中 if 会返回最后执行的表达式的值:

x = 10
result = if x > 0 then "positive" else "negative" end
# 输出 result: "positive"
puts result  
三元运算符(简写):
a = 10
b = 20
# 三元表达式
max = (a > b) ? a : b
# 输出 max: 20
puts max  
真假值规则
  • 真值:除了 falsenil 之外的所有值。
  • 假值:仅 falsenil

示例

# 会执行(空字符串为真)
if ""
  puts "if 空字符串: This is true."
end

# 会执行
if 0
  puts " if 0: This is true."
end

# 不会执行
if nil
  puts "if nil: This is false."
end

unless语句

unless语句的定义和使用

在 Ruby 中,unlessif 的反向条件语句,用于 “如果条件不成立,则执行” 的场景。它的逻辑等同于 if !condition,但语法更简洁易读。以下是详细用法和示例:

基础 unless 语句
  • 基础语句格式:
unless 条件
  # 条件为假(false/nil)时执行
end
  • 示例代码如下:
# 基础 unless 语句
rainy = false
unless rainy
  # 除非下雨(rainy == false),否则执行
  puts "rainy == false, Go outside and play!"
end
unless-else 结构
  • 语句格式:
unless 条件
  # 条件为假时执行
else
  # 条件为真时执行(注意逻辑与if相反)
end
  • 示例代码如下:
age = 18
unless age < 18
  # 除非年龄小于 18,否则执行
  puts "You are an adult."
else
  # 否则执行
  puts "You are not an adult."
end
单行写法(修饰符形式)
  • 语句格式:
代码 unless 条件
  • 示例代码如下:
def file_protected?
  false # 假设文件不受保护
end

def delete_file
  puts "File deleted."
end

# # 除非文件受保护,否则删除
delete_file unless file_protected?  
&&|| 结合
  • 示例代码如下:
# 与 &&、|| 结合
age = 18
unless age < 18 && age > 60
  # 除非年龄小于 18 或大于 60,否则执行
  puts "You are eligible for retirement."
end

# 与 ! 结合
is_major = true
unless !is_major
  # 除非不是专业的,否则执行
  puts "You are a major."
end

常见应用场景

防御性编程
def data_invalid?
  false
end

def save_data
  puts "Data saved successfully."
end

# 除非数据非法,才能保存数据,
save_data unless data_invalid?
默认值赋值
# 除非name有值,否则设置 Guest
name = "Guest" unless name
puts "Hello, #{name}!"
跳过异常情况
def process_file
  puts "Processing file..."
end

# 假设文件不存在
file = nil

# 跳过异常情况
process_file unless file.nil?

对比 ifunless

场景 if 写法 unless 写法
条件成立时执行 if active then run unless !active then run
条件不成立时执行 if !active then run unless active then run

优先选择语义更清晰的写法,例如:

  • if 表达 “如果满足条件”
  • unless 表达 “除非满足条件”(即“如果不满足”)

网站公告

今日签到

点亮在社区的每一天
去签到