Ruby 块学习笔记

在 Ruby 中,一个块是一个被花括号({})或 do/end 包围的代码集合。块可以接受参数,并且常被用作迭代器。

创建块

使用花括号

Copy Code
[1, 2, 3].each { |num| puts num }

使用 do/end

Copy Code
[1, 2, 3].each do |num| puts num end

参数

块可以接受参数,这些参数用竖线(|)包围起来。

Copy Code
[1, 2, 3].map { |num| num * 2 }

多个参数也可以传递给块:

Copy Code
[1, 2, 3].inject do |sum, num| sum + num end

yield

调用块时,使用 yield 关键字。

Copy Code
def my_method yield end my_method { puts "hello world" }

可以将参数传递给 yield :

Copy Code
def my_method yield("hello", "world") end my_method { |a, b| puts "#{a} #{b}" }

实例

计算数组中的偶数之和

Copy Code
numbers = [1, 2, 3, 4, 5, 6] sum = 0 numbers.each do |num| sum += num if num.even? end puts sum

输出:

Copy Code
12

筛选数组中的字符串

Copy Code
strings = ["hello", 123, "world", true, "foo"] filtered_strings = [] strings.each do |str| if str.is_a?(String) filtered_strings << str end end puts filtered_strings

输出:

Copy Code
hello world foo