ZetCode

Ruby def 关键字

最后修改日期:2025 年 4 月 27 日

本教程解释了如何使用 Ruby 的 def 关键字来定义方法。方法是 Ruby 程序的基本构建块。

def 关键字定义了一个具有名称、参数和主体的方法。方法封装了行为,可以被多次调用。它们有助于将代码组织成可重用的单元。

Ruby 方法可以接受参数、返回值,并具有默认参数。它们可以定义在对象或类上。方法遵循命名约定。

基本方法定义

这个简单的例子演示了最基本的方法定义。该方法不接受任何参数,并执行一个简单的操作。

basic_method.rb
def greet
  puts "Hello, Ruby!"
end

greet
greet

def 关键字开始方法定义,后面跟着方法名。方法主体包含要执行的代码。通过方法名调用该方法。本例调用了两次 greet

带参数的方法

方法通常接受参数以使其更灵活。本例演示了一个接受一个参数的方法。

method_with_param.rb
def greet(name)
  puts "Hello, #{name}!"
end

greet("Alice")
greet("Bob")

greet 方法现在接受一个 name 参数。该参数用于字符串插值。我们通过传递不同的参数来调用该方法,以产生不同的输出。

带默认参数的方法

Ruby 允许使用默认参数值。当未提供参数时,将使用默认值。

default_params.rb
def greet(name = "Ruby")
  puts "Hello, #{name}!"
end

greet("Alice")
greet

当未提供参数时,name 参数默认为“Ruby”。第一次调用提供了一个参数,第二次调用使用了默认值。默认参数使方法更加灵活。

带返回值的 C# 方法

方法可以使用 return 关键字返回值。最后一个表达式的值默认会被返回。

return_value.rb
def square(x)
  x * x
end

result = square(5)
puts "5 squared is #{result}"

square 方法返回其参数的平方。我们将返回值存储在一个变量中。Ruby 会自动返回最后一个表达式的值,因此这里的 return 是可选的。

多个参数

方法可以接受多个参数。本例演示了一个计算三个数字之和的方法。

multiple_params.rb
def sum(a, b, c)
  a + b + c
end

total = sum(10, 20, 30)
puts "The sum is #{total}"

sum 方法接受三个参数并返回它们的和。我们在调用方法时传递三个参数。Ruby 计算加法表达式并返回结果。

可变数量的参数

Ruby 方法可以使用星号 (*) 运算符接受可变数量的参数。这对于灵活的方法定义非常有用。

variable_args.rb
def average(*numbers)
  numbers.sum.to_f / numbers.size
end

puts average(1, 2, 3)
puts average(10, 20, 30, 40, 50)

*numbers 参数将所有参数收集到一个数组中。我们通过对总数进行求和并除以计数来计算平均值。该方法适用于任意数量的参数。

关键字参数

Ruby 支持关键字参数,以实现更具可读性的方法调用。参数通过名称而不是位置传递。

keyword_args.rb
def create_person(name:, age:, occupation: "Developer")
  { name: name, age: age, occupation: occupation }
end

person = create_person(name: "Alice", age: 30)
puts person.inspect

该方法定义了带有默认值的命名参数。我们使用关键字语法调用它。这使得调用更具描述性且与顺序无关。默认值使参数成为可选的。

来源

Ruby 方法文档

本教程通过示例介绍了 Ruby 的 def 关键字,包括方法定义、参数、返回值和高级功能。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已创作了超过 1400 篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 Ruby 教程