The Ruby Programming Languagep.164에 따라. begin
문은 예외를 전파하지 않는 경우시작 블록의 값은 어떻게 결정됩니까?
는, 값 명령문의 는
begin
,rescue
또는else
절에서 평가의 마지막 표현의 값입니다. 및 절을 보장
하지만이 과 일치하는이 동작을 찾을 함께 다른 절 블록을 시작합니다.
def fact (n)
raise "bad argument" if n.to_i < 1
end
value = begin
fact (1)
rescue RuntimeError => e
p e.message
else
p "I am in the else statement"
ensure
p "I will be always executed"
p "The END of begin block"
end
p value
출력은 :
"I am in the else statement"
"I will be always executed"
"The END of begin block"
"I am in the else statement"
[Finished]
은 value
else 절로 평가되고 여기서
누군가가 시작 블록에서 무슨 일이 일어 났는지 설명 할 수 있습니까?
"코드 블록이 실행 된 마지막 문에 대해 평가됩니다." 이것은 분명히 잘못된 가정입니다. –
죄송합니다. 더 구체적인 진술 및 참고 문헌으로 수정하십시오. – steveyang
이제 스스로 질문에 대답했습니다. "시작, 구조 또는 기타"는 실제로 올바른 순서이므로 이것은 사양과 일치합니다. –