Как я могу использовать этот метод сокращения, используя отправную точку? - PullRequest
0 голосов
/ 28 июня 2019

Я уже некоторое время пытаюсь преодолеть это. Это рубиновый курс, и он просит вас создать метод:

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)>

Ценю любую помощь / объяснения! Спасибо

1 Ответ

1 голос
/ 28 июня 2019

Вам нужно передать 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
...