在 Ruby 中使用注入方法

Nurudeen Ibrahim 2023年1月30日
  1. Ruby 中注入方法的語法
  2. 在 Ruby 中使用 Inject 方法對陣列求和
  3. 使用 Ruby 中的 Inject 方法從陣列構建雜湊
  4. 在 Ruby 中使用 Inject 方法過濾陣列
在 Ruby 中使用注入方法

本文將演示 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 方法,兩者可以互換使用。