로컬 변수 스코프가 현재 블록에 있으므로 블록을 사용하는 루핑 구문이 새로운 어휘 범위를 정의하므로 외부에서 변수에 액세스 할 수 있습니다. 따라서 그렇지 않은 사람은 그렇지 않습니다. 여기 블럭에 대해 혼란스럽고 Ruby에서 로컬 스코프가 작동하는 방식에 대해 혼동을 들었습니다.
내가 놀리려는에서 실행 예입니다루프 문 블록을 소요하기 때문에 자신의 지역 변수가 있습니다
>loop do
k = 100
break
end
>defined? k
# => nil
블록을하지 않는 while 문 대 :
: 여기>while true
j = 100
break
end
>defined? j
# => 'local-variable'
는하지만 혼란 마지막 문이도 같이 쓸 수있다 것입니다
>while true do
j = 100
break
end
>defined? j
# => 'local-variable'
블록처럼 보이지만 그렇지는 않습니다. 다음 마지막으로
:while true {
m = 100
return
}
에 구문 오류가 있습니다.
내 결론은 실제로 do-end 블록이 실제로 블록이되는 것은 아니며 루비 소스 코드를 읽거나 읽는 것 이외의 코드를 읽을 때 어휘 범위로 정의 된 것을 아는 명백한 방법이 없다는 것입니다 ri가 core ruby에 관한 문서를 제공하도록 ..). 이것은 명백한 무언가 일지 모르지만 Ruby를 처음 접했고 규칙을 읽거나 (심지어 루비 소스 코드 일지라도) 읽을 수있는 코드를 읽음으로써 코드를 올바르게 읽는 데 도움이됩니다. TIA
'정의 란 무엇입니까? 비표준 방법을 사용하는 경우 설명하십시오. – sawa
비표준이 아닙니다. 오타입니다. 나는 "정의?"를 의미했습니다. – tarzan
왜 투표가 늦습니까? 이것은 잘못된 질문입니까? (오타를 정의하는 것 이외) – tarzan