저는 루비 초보자이며 블록 및 수율을 다루는 튜토리얼을 살펴보고 특히 Monkey Patching을 시연합니다. 여기 루비 블록 및 수율 이해에 어려움이 있음
는내가 여기는 Array 클래스의 인스턴스에서 호출되는 새로운 new_map 방법을 쓰기 코드 문제의 요구 사항입니다. 암시 적 (자체) 인수로 호출 된 배열을 사용해야하지만 그렇지 않으면 동일하게 작동합니다. 여기
class Array
def new_map(&block)
self.map(&block)
end
def new_select!(&block)
self.replace(self.select(&block))
end
end
를 제출 한 사양은 내가 처음이자 마지막 시험을 통과
describe Array do
describe '#new_map' do
it "returns an array with updated values" do
array = [1,2,3,4]
expect(array.new_map(&:to_s)).to eq(%w{1 2 3 4})
expect(array.new_map{ |e| e + 2 }).to eq([3, 4, 5, 6])
end
it "does not call #map" do
array = [1,2,3,4]
array.stub(:map) { '' }
expect(array.new_map(&:to_s)).to eq(%w{1 2 3 4})
end
it "does not change the original array" do
array = [1,2,3,4]
expect(array.new_map(&:to_s)).to eq(%w{1 2 3 4})
expect(array).to eq([1,2,3,4])
end
end
을 통과해야하지만 두 번째를 통과하지 수 있고있는 한 코드입니다 이 오류가 발생했습니다
expected: ["1", "2", "3", "4"]
got: ""
(compared using ==)
exercise_spec.rb:14:in `block (3 levels) in <top (required)>'
사양에서 나는이 특별한 도전에 .map
방법이 사용되지 않았다고 가정해야합니까?
나는이 가정을 사용해도 시도했습니다. 그러나 그것은 어떤 스펙도 통과하지 못했습니다.
def new_map(array)
new_array =[]
array.each do |i|
new_array << yield(i)
end
new_array
end
업데이트
이 코드를 입력하며
def new_map
new_array = []
self.each do |i|
new_array << yield(i)
end
new_array
end
근무하지만 내가 인수
(array)
를 제거하고 따라서에
array.each
을 변경 한 이유는 누군가가 나를 이해하는 데 도움이 수 바라고 있었다
self.each
?
문제가 해결되면 올바른 표시를하십시오. –