函数
在Ruby中,函数使用 def
关键字进行定义。它们通常被称为方法,毕竟在Ruby中一切都是对象。
定义函数的基本语法:
def method_name(parameter1, parameter2, ...)
# 函数体
# 当函数被调用时执行的代码
end
以下是一个带有一个参数的基本方法:
def triple(x)
x * 3
end
函数隐式返回最后一条语句的值。
你也可以使用显式返回:
def square(x)
return x * x
end
大部分情况下,函数参数周围的括号通常是可选的。
a = square 5
puts a # => 25
可变参数
你可以使用星号操作符 (*
) 定义接受可变数量参数的方法。
方法通过它接受任意数量的参数,并将这些参数收集到一个数组中。
def sum(*numbers)
total = 0
numbers.each { |num| total += num }
total
end
# 使用不同数量的参数调用方法
result1 = sum(1, 2, 3)
result2 = sum(4, 5, 6, 7, 8)
puts result1 # => 6
puts result2 # => 30
多返回值
方法可以通过使用数组、哈希或特殊的 return
语法来返回多个值。
def multiple_values
return 1, "hello", true
end
result_array = multiple_values
puts result_array.inspect # => [1, "hello", true]
a, b, c = multiple_values
puts a, b, c
# 1
# hello
# true
yield
yield
关键字在方法内部用于调用传递给该方法的块。它允许方法在其实现的特定锚点处执行一块代码。块可以接受参数,并在方法的上下文中执行。
def greet
puts "Hello!"
yield
puts "Goodbye!"
end
greet do
puts "Welcome to the Ruby world!"
end
# Hello!
# Welcome to the Ruby world!
# Goodbye!
函数体中可以有多个 yield
。
def whereareyou
yield
yield
yield
end
whereareyou {puts "where are you?"}
# where are you?
# where are you?
# where are you?
你还可以使用 yield
向块传递参数:
def calculate
x = 5
y = 10
result = yield(x, y)
puts "Result: #{result}" # => Result: 50
end
calculate do |a, b|
a * b
end
代码挑战
编写一个名为
fizzbuzz
的 Ruby 函数,该函数以整数作为输入,并执行以下操作:
- 如果数字可被3整除,则打印 "Fizz"。
- 如果数字可被5整除,则打印 "Buzz"。
- 如果数字同时可被3和5整除,则打印 "FizzBuzz"。
- 如果上述条件均不适用,则打印数字本身。
Loading...
> 此处输出代码运行结果