实现accumulate操作。它接收一个集合,以及一个要对集合中每个元素执行的操作,返回一个新集合,新集合中的每个元素都是把该操作应用到输入集合中对应元素后的结果。
给定下面这个数字集合:
以及这个操作:
x => x * x)你的代码应该能够生成由平方值组成的集合:
查看测试套件,了解预期的函数签名。
别去碰标准库提供的那些 collect/map/fmap/whatchamacallit 功能!请改用其他基本工具,自己把这道题解决掉。
在为通用的 Enumerable 定义方法时,通常会调用#to_enum,以防没有传入代码块。
下面是一个你可以添加的额外测试:
def test_accumulate_when_block_is_deferred
skip
accumulate_enumerator = [1, 2, 3].accumulate
accumulated_result = accumulate_enumerator.map do |number|
number * number
end
assert_equal [1, 4, 9], accumulated_result
end