Ruby 中的 inject 方法如何使用

200 阅读1分钟

求和

# result 以 init_value 为初始值
enum.inject(init_value){|result,element| block}
# result 以 element 里的第一个元素为初始值。
enum.inject{|result,element| block}
[1,2,3,4].inject{|result,element| result+element} #=>10
[1,2,3,4].inject(0){|result,element| result+element} #=>10
[1,2,3,4].inject(1){|result,element| result+element} #=>11

将一个数组中的元素复制到另一个数组中

arr = []
arr2 = [1,2,3,4,5,6,7]
arr2.each do |i|
  arr<<i
end
p arr
arr = arr2.inject([]) do |arr1, i|
  arr1<< i
end
p arr

选择出数组中的偶数

b = [1, 2, 3, 4, 5, 6]
array = b.inject([]) do |result, element|
  if element % 2 == 0  
    result << element.to_s
  else
    result
  end 
end
p array
array1= [1, 2, 3, 4, 5, 6].inject([]) do |result, element|  
  result << element.to_s if element % 2 == 0  
  result  
end  
p array1

将数组转换成hash

a = [[:name1, 'Shane'], [:name2, 'Harvie'],[:name3, 'Harvie']]
hash = a.inject({}) do |result, element|  
  result[element.first] = element.last  
  result  
end
p hash

原文链接