Menu
CoddyTech

默认参数值

本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 53 课,共 88 课。

有时,你希望在未提供参数时,方法能使用合理的默认值。默认参数值可以让你定义调用方未指定参数时使用的值。

要设置默认值,请在参数名后使用 = 符号:

def greet(name = "friend")
  puts "Hello, #{name}!"
end

greet("Alice")  # 输出:Hello, Alice!
greet           # 输出:Hello, friend!

调用 greet 时如果不提供参数,Ruby 会使用 "friend" 作为默认值。提供参数时,它会覆盖默认值。

你可以混合使用普通参数和带默认值的参数。带默认值的参数通常放在没有默认值的参数后面,而且普通参数不能位于两个带默认值的参数之间:

def power(base, exponent = 2)
  base ** exponent
end

puts power(5)     # 输出:25(5 的平方)
puts power(2, 3)  # 输出:8(2 的立方)

这样可以让方法更灵活。调用者只需提供必要的信息,可选的详细信息则使用合理的默认值。

challenge icon

挑战

简单

定义一个名为 multiply 的方法,它接受两个参数:a 和 b。参数 b 的默认值应为 1。该方法应返回 a 和 b 的乘积。

从输入中读取两个整数:

  1. 第一个数字(始终会提供)
  2. 第二个数字(可能会提供,也可能不会提供)

如果只提供一个输入,就只用这个参数调用方法(b 使用默认值)。如果提供了两个输入,就用两个参数调用方法。

打印方法调用的结果。

输入格式如下:

  • 第一行:第一个数字
  • 第二行:一个数字或单词 none

例如,输入为 7 和 3 时:

21

输入为 5 和 none 时:

5

输入为 12 和 4 时:

48

亲手试试

# 读取输入
a = gets.chomp.to_i
b_input = gets.chomp

# TODO:定义 multiply 方法,将参数 b 的默认值设为 1


# TODO:根据 b_input 是 "none" 还是数字,调用相应的方法
# 如果 b_input 是 "none",调用 multiply 时只传入 a
# 如果 b_input 是数字,调用 multiply 时传入 a 和 b

# 打印结果
puts result
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Ruby 在线编译器