2013-12-21 2 views
3

Ruby에서 사용하고있는 루프 for을 보았을 때의 대부분은 Ruby를 잘 아는 사람이 없습니다. 일반적으로 for 루프가 each과 같은 블록을 사용하는 반복기로 대체 될 때 훨씬 더 읽기 쉽습니다.for 루프 사용?

for은 블록이있는 반복기로 쉽게 다시 쓸 수 없거나 for을 사용하는 이점이 있습니까?

for은 키워드이기 때문에 for이 반복기 방법보다 빠릅니다. for의 목적은 무엇입니까?

+1

+1 좋은 질문입니다. 나는 downvotes가 독점적으로 루프를 사용하는 독자들로부터 왔다고 생각합니다. 일반적으로 인덱스를 반복합니다. 아, 우린 절대 모를거야. 어쨌든, 나는 그 토론을 읽기를 고대한다. 나는 객관적인 대답을 요구하는 문제의 측면에서 끝나기를 기대하지 않습니다. 흠, 어쩌면 새 와우가 각 다운 보트에 대해 9 점을 주겠다고 생각했습니다. –

+0

아마 맞았을 것입니다. 투표 수 : +6, -4. 전에는 못 봤어. –

답변

2

블록 구문은 일반적 루비 커뮤니티 바람직이 출력했을

numbers = [1, 2, 3] 

numbers.each do |n| 
    # do nothing 
end 
begin 
    puts n 
rescue Exception => e 
    puts e.message 
end 

for n in numbers do 
    # do nothing 
end 
puts "still: #{n}" 

.

for 또는 each을 사용하는 동안 변수 범위에 약간의 차이가 있습니다. for 루프 내에서 선언 된 변수는 루프 외부에서 사용할 수 있습니다. 여기서 each 블록 내의 변수는 블록에 대해 로컬이므로 변수 외부에서 사용할 수 없습니다.

+2

그것은 변수 오염 문제입니다; 'for'는 변수 공간을 불필요하게 오염시킵니다. –

4

나는 6-31 년 전에 Rails의 책에서 for 루프를 많이 보았습니다. 그러나 더 이상 선호하지 않습니다.

반복기 변수의 범위에 차이가 있습니다. 다음 예를 보자

# undefined local variable or method `n' for main:Object 
# still: 3 
+0

v1.8을 사용하지는 않았지만, 1.9 이전에 'n'이 이전에 초기화 된 경우'numbers.each do | n | ..end' 다음에'n'이 범위에 있음을 이해합니다 (예 :'n = 0 '). 어쨌든, 나는 sawa가 스코프의 차이를 알고 있고, 만약 존재한다면, 다른 어떤 장점도 for를 사용하는 것을 찾고 있다고 확신한다. –