Надеюсь, вы мне поможете. Я пытаюсь понять, что происходит, но вот что я должен сделать:
Напишите обобщенную карту и уменьшите метод. Оба эти метода принимают блок и требуют передачи информации между методом и блоком.
Вот что ищет тест:
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)>'
Спасибо, что взглянули, и любая помощь в правильном направлении очень ценится.