【发布时间】:2010-12-03 17:18:52
【问题描述】:
如何获取项目的索引:
my_array.inject {|rs,item| rs += item}
我需要总结除第 i 个元素之外的所有元素。
【问题讨论】:
标签: ruby code-injection enumerable
如何获取项目的索引:
my_array.inject {|rs,item| rs += item}
我需要总结除第 i 个元素之外的所有元素。
【问题讨论】:
标签: ruby code-injection enumerable
使用index数组方法:
>> arr = ['a','b', 'c','a']
=> ["a", "b", "c", "a"]
>> arr.index('a')
=> 0
>> arr.index('b')
=> 1
【讨论】:
简单总结一下指标。
(0...a.size).inject(0) { |sum, index| if index != (i - 1) then sum + my_array[i] else sum }
【讨论】:
您必须自己编写(即使在 Ruby 1.9 中,因为注入不返回迭代器)。
module Enumerable
def inject_with_index(injected)
each_with_index {|value, index| injected = yield(injected, value, index)}
injected
end
end
编辑:如果您切换 inject 和 each_with_index(感谢评论者!),您可以在没有新方法的情况下做到这一点:
["a", "b", "c"].each_with_index.inject("") do |result, (value, index)|
index != 1 ? result + value : result
end
如果您想排除该值,请确保只返回 result。这也适用于第一种方法。
【讨论】:
你可以先把你不想要的东西拿出来:
my_array.values_at(0...i,(i+1)..-1).inject {|rs,item| rs += item}
【讨论】: