我有一个名为 Hsh 的类,它基本上模拟哈希。它有一个 Couple 对象数组(其中包含名为 one 和 2 的字段,一个是 int 另一个是该 int 的字符串名称)。
我应该能够接听以下电话:
h = x.inject({}) {|a, b| a[b.one] = b.two; a}
其中 x 是 Hsh 对象。
我不确定如何在 Hsh 中实现注入(inject)方法?比如,我会写什么:
def inject ????
??
??
end
它应该做的就是创建一个散列映射。
你真的不需要实现它,只需实现Hsh#each
并包含Enumerable
,你将免费获得inject
.
对于您的具体示例,这样的事情应该有效:
def inject accumulator
#I assume Hsh has some way to iterate over the elements
each do |elem|
accumulator = yield accumulator, elem
end
accumulator
end
但是 inject 的实际实现有点不同(例如,在不提供累加器的情况下工作,采用符号而不是 block 等)