在 Ruby 中使用注入方法
    
    
            Nurudeen Ibrahim
    2023年1月30日
    
    Ruby
    Ruby Inject
    
 
本文将演示 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 方法,两者可以互换使用。
        Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe