在 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
方法,兩者可以互換使用。