Я работаю по бесплатной ruby учебной программе App Academy и у меня возникают проблемы с методами, которые принимают несколько аргументов.
Метод:
should accept any number of arrays of the same length as arguments
should return a 2D array where each subarray contains the elements at the same index from each argument
Я пробовал разбить это на части используя метод Array # zip, но я не уверен, как написать его, когда есть неопределенное количество аргументов.
def zip(array, *arrays)
array.zip(arrays)
end
Вышеуказанный метод работает, когда я ввожу только два аргумента, но когда вы добавляете больше кроме этого, он производит непреднамеренный вывод.
Должен выдать:
describe "zip" do
let(:array_1) { ['a', 'b', 'c'] }
let(:array_2) { [1, 2, 3] }
let(:array_3) { ['w', 'x', 'y'] }
it "should accept any number of arrays of the same length as arguments" do
expect { zip(array_1) }.to_not raise_error
expect { zip(array_1, array_2) }.to_not raise_error
expect { zip(array_1, array_2, array_3) }.to_not raise_error
end
it "should return a 2D array where each subarray contains the elements at the same index from each argument" do
expect(zip(array_1, array_2)).to eq([
["a", 1],
["b", 2],
["c", 3]
])
expect(zip(array_2, array_1)).to eq([
[1, "a"],
[2, "b"],
[3, "c"]
])
expect(zip(array_1, array_2, array_3)).to eq([
["a", 1, "w"],
["b", 2, "x"],
["c", 3, "y"]
])
end
end
Может кто-нибудь помочь мне с этим? Мне кажется, что я не определяю свой метод должным образом, но я не уверен.