ruby - 我怎样才能使用这个reduce方法使用一个起点?
问题描述
我已经尝试了一段时间来克服这个问题。这是一门红宝石课程,它要求您构建一个方法:
describe 'my own reduce-like methods' do
describe "reduce_to_total returns a running total when not given a starting point" do
it "reduces correctly" do
source_array = [1,2,3]
expect(reduce_to_total(source_array)).to eq(6)
end
end
describe "reduce_to_total returns a running total when given a starting point" do
it "reduces correctly" do
source_array = [1,2,3]
starting_point = 100
expect(reduce_to_total(source_array, starting_point)).to eq(106)
end
end
到目前为止,这是我的代码,通过了第一个测试:
def reduce_to_total(source_array, starting_point = 100)
source_array.reduce(0) { |sum, num| sum + num}
end
但仍然得到以下错误:
Failures:
1) my own reduce-like methods reduce_to_total returns a running total when given a starting point reduces correctly
Failure/Error: expect(reduce_to_total(source_array, starting_point)).to eq(106)
expected: 106
got: 6
(compared using ==)
# ./spec/map_and_reduce_spec.rb:42:in `block (3 levels) in <top (required)>
感谢任何帮助/解释!谢谢
解决方案
您需要starting_point
作为reduce
参数传递
def reduce_to_total(source_array, starting_point = 0)
source_array.reduce(starting_point) { |sum, num| sum + num}
end
见下文:
[2] pry(main)> [1,2,3].reduce(0) { |sum, num| sum + num}
=> 6
[3] pry(main)> [1,2,3].reduce(100) { |sum, num| sum + num}
=> 106
推荐阅读
- r - 从'YYYYMMDD'在R中创建一周中的一天变量
- java - lwjgl 3 macOS 创建窗口的问题
- python-3.x - 如何在 Python 中将列添加到已经存在的文本文件中?
- flutter - 阅读 Flutter Firebase
- linux - 为什么`of_find_compatible_node`函数在`/kernel/include/linux/of.h`中有两个定义,定义是如何选择的?
- javascript - 如何在 D3.js 中链接悬停时的县和数据
- c# - 登录失败,C# 应用程序/SQL Server 数据库安装在另一台机器上
- javascript - Electron.js 错误“require”未定义在