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 Codedef my_method
yield
end
my_method { puts "hello world" }
可以将参数传递给 yield
:
Copy Codedef my_method
yield("hello", "world")
end
my_method { |a, b| puts "#{a} #{b}" }
实例
计算数组中的偶数之和
Copy Codenumbers = [1, 2, 3, 4, 5, 6]
sum = 0
numbers.each do |num|
sum += num if num.even?
end
puts sum
输出:
Copy Code12
筛选数组中的字符串
Copy Codestrings = ["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 Codehello
world
foo