필자는 내 통제를 벗어난 외부 요인에 따라 오류가 발생하기 쉬운 장기 실행 반복적 방법을 사용합니다. 메소드 호출이 성공적으로 완료되면 호출자는 오류 처리 및보고 기능의 일부로 성공적으로 완료된 반복 수를 사용할 수 있도록 호출자의 범위에서 성공적으로 완료된 반복 횟수를 유지하려고합니다. 루비는 엄격하게 (실제로 이것에 대해 논할 필요가 없다) 지나치게 가치가 있기 때문에, 나의 옵션은 카운터 객체 (자신의 객체를 소유하기에는 너무 기본적인 것처럼 보임) 또는 고안된 카운터 배열을 전달하는 것으로 제한되는 것처럼 보입니다.참조로 카운터를 전달하기 위해 선호되는 루비 관용어
counter = [0]
begin
LongRunningStuff.error_prone_iterations(counter)
puts "success! completed #{counter[0]} iterations"
rescue
puts "failed! completed #{counter[0]} iterations"
end
이것은 최악의 경우에는 기껏해야 어리석은 느낌을줍니다. 루비 같은 것이 더 있단 말인가?
CS 관점에서 볼 때, 확실하다면. 이 답변을 정리하기 위해 모든 의견을 철회하고 적절하게 답변을 조정했습니다. – tadman
문맥을 추가하는 데 도움이되는 제안에 감사드립니다. 우정의 정신으로 필자는 참고 문헌/by-value 주석도 삭제했다. 당신이 지적했듯이, 요리사가 요리의 관점에서 자신의 작업에 접근하는 것처럼 "CS 관점에서"작업을 통해 접근합니다. :-) –