나는 명시적인 반환과 암시 적 반환 사이의 차이점을 조사하기 위해 자체 정의 include?
메서드를 사용하고 있습니다. 나는 #each
이 반복 된 컬렉션을 반환한다는 것을 이해하고 있으므로 올바른/잘못된 암시 적 반환 값을 올바른 위치에 배치해야한다고 생각합니다. 그러나 컬렉션을 다시 가져올 때 무엇을 수정해야할지 모르겠습니다.Ruby의 암시 적 반환 값 범위
def self.include?(array, search_item)
array.each do |elem|
if elem == search_item
true
end
end
end
다음은 내가 테스트하고있는 테스트입니다. 그러나 리턴 값을 정확하게 일치시키는 방법을 모르겠습니다. 일치하지 않는 이유는 무엇입니까? 또는 내재 된 수익의 범위를 어떻게 이해해야합니까?
result = MethodReturns.include?(numbers_array, 4)
expect(result).to eq(true)
result = MethodReturns.include?(numbers_array, 7)
expect(result).to eq(false)
코드는 정확하지만 설명이 없습니다. 'return' _inside_ 루프가 중요합니다. 그렇지 않으면'true'가'each'에 의해 삼켜지고 반환되지 않을 것입니다. – Max
기본적으로 실행 방법을 벗어날 필요가있을 때마다 항상 회신을 작성하므로 절대로 그렇게 생각하지 않습니다. 추가 해줘서 고마워. – Tacoman667
@Max 추가 설명 : 블록에 의해 반환되는 값은 블록에서 실행되는 마지막 식입니다. 'each' 메쏘드는 블록을 취하는데이 경우 블록은 현재 요소가 검색 항목이라면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 그러나이 문제는'each' 메쏘드가 블록의 각 실행으로부터의 출력을 무시하고 대신에 각 메쏘드가 호출 된 배열을 반환하도록 정의됩니다. 그래서,'each' 메소드 호출이 메소드의 마지막 표현 이었기 때문에, 배열은이 구현물에 의해 리턴됩니까? – Max