Cú pháp đối với phương pháp bơm như sau:
inject (value_initial) { |result_memo, object| block }
Hãy giải quyết ví dụ trên ví dụ
[1, 2, 3, 4].inject(0) { |result, element| result + element }
cung cấp số làm đầu ra.
Vì vậy, trước khi bắt đầu chúng ta hãy xem các giá trị được lưu trữ trong mỗi biến là gì:
result = 0 Các zero đến từ bơm (giá trị) là 0
element = 1 Nó là phần tử đầu tiên của mảng.
Okey !!! Vì vậy, hãy bắt đầu tìm hiểu các ví dụ trên
Bước: 1 [1, 2, 3, 4].inject(0) { |0, 1| 0 + 1 }
Bước: 2 [1, 2, 3, 4].inject(0) { |1, 2| 1 + 2 }
Bước: 3 [1, 2, 3, 4].inject(0) { |3, 3| 3 + 3 }
Bước: 4 [1, 2, 3, 4].inject(0) { |6, 4| 6 + 4 }
Bước: 5 [1, 2, 3, 4].inject(0) { |10, Now no elements left in the array, so it'll return 10 from this step| }
Đây Bold-Italic Giá trị là các phần tử lấy từ mảng và chỉ đơn giản là Giá trị Bold là giá trị kết quả.
Tôi hy vọng bạn hiểu được phương pháp của phương pháp #inject
của #ruby
.
Xem [Wikipedia: Fold (hàm bậc cao hơn)] (http://en.wikipedia.org/wiki/Fold_%28higher-order_function%29): tiêm là "gấp trái", mặc dù (không may) thường với các tác dụng phụ trong việc sử dụng Ruby. – user2864740