Использование метода обобщенной карты для передачи элемента и блокировки путем возврата нескольких результатов - PullRequest
0 голосов
/ 01 июля 2019

Надеюсь, вы мне поможете. Я пытаюсь понять, что происходит, но вот что я должен сделать:

Напишите обобщенную карту и уменьшите метод. Оба эти метода принимают блок и требуют передачи информации между методом и блоком.

Вот что ищет тест:

describe 'my own map' do
  it "returns an array with all values made negative" do
    expect(map([1, 2, 3, -9]){|n| n * -1}).to eq([-1, -2, -3, 9])
  end

  it "returns an array with the original values" do
    dune = ["paul", "gurney", "vladimir", "jessica", "chani"]
    expect(map(dune){|n| n}).to eq(dune)
  end

  it "returns an array with the original values multiplied by 2" do
    expect(map([1, 2, 3, -9]){|n| n * 2}).to eq([2, 4, 6, -18])
  end

  it "returns an array with the original values squared" do
    expect(map([1, 2, 3, -9]){|n| n * n}).to eq([1, 4, 9, 81])
  end
end

Пока мой код:

def map(element1) 
  element1.map { |n| n * -1 }
end

Теперь я больше ничего не вводил, потому что мне нужно понять, как использовать один и тот же метод, который будет искать разные вещи?

Вот ошибки:

my own map
  returns an array with all values made negative
  returns an array with the original values (FAILED - 1)
  returns an array with the original values multiplied by 2 (FAILED - 2)
  returns an array with the original values squared (FAILED - 3)

     ArgumentError:
       negative argument
     # ./lib/my_code.rb:2:in `*'
     # ./lib/my_code.rb:2:in `block in map'
     # ./lib/my_code.rb:2:in `map'
     # ./lib/my_code.rb:2:in `map'
     # ./spec/generalized_map_and_reduce_spec.rb:10:in `block (2 levels) in <top (required)>'

Спасибо, что взглянули, и любая помощь в правильном направлении очень ценится.

1 Ответ

0 голосов
/ 01 июля 2019

Вы не должны использовать Enumerable#map для реализации своих map.

  1. Используйте while или for петли или (и это будет наилучшее решение) Enumerable#each.
  2. Пусть ваш map примет блок и вызовэтот блок внутри цикла или передать его на each
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...