在 Ruby 中使用注入方法
Nurudeen Ibrahim
2023年1月30日
本文将演示 Ruby 中 inject
方法的不同用途。
Ruby 中注入方法的语法
inject
方法采用一个包含两个参数的块。第一个参数是一个累加器,即被计算表达式的总和,第二个参数是当前数组项。
语法:
inject (initial_value) { |accumulator, array_item| expression }
在 Ruby 中使用 Inject 方法对数组求和
示例代码:
numbers = [5, 6, 7, 8]
sum = numbers.inject (0) { |result, item| result + item }
puts sum
输出:
26
在上面的示例中,初始值为 0。
累加器存储在 result
变量中,每次迭代都会更新,它是 result + item
的结果。item
变量是当前数组值。
使用 Ruby 中的 Inject 方法从数组构建哈希
示例代码:
students = [["John", "Grade 2"], ["Michael", "Grade 3"], ["Stephen", "Grade 4"]]
students_hash = students.inject({}) do |result, item|
result[item.first] = item.last
result
end
p students_hash
输出:
{"John"=>"Grade 2", "Michael"=>"Grade 3", "Stephen"=>"Grade 4"}
上面的示例将嵌套数组转换为键值哈希,使用每个数组项的第一个元素作为键,第二个元素作为值。
这里的初始累加器值是一个空哈希 {}
。
在 Ruby 中使用 Inject 方法过滤数组
示例代码:
numbers = [1, 2, 3, 4, 5, 6, 7]
even_numbers = numbers.inject([]) do |result, element|
result << element if element.even?
result
end
p even_numbers
输出:
[2, 4, 6]
上面的示例构建了一个新数组并用 numbers
数组中的偶数填充它。
这里的初始值是一个空数组 []
。
注意
inject
方法的别名是 reduce
方法,两者可以互换使用。