Exit For
루프를 종료하는 대신 다음 항목으로 이동하는 것을 제외하고 와 같은 문구가 있습니까?
예를 들면 :
For Each I As Item In Items
If I = x Then
' Move to next item
End If
' Do something
Next
Else
다음과 같이 읽을 수 있도록 If 문에 간단히 추가 할 수 있습니다.
For Each I As Item In Items
If I = x Then
' Move to next item
Else
' Do something
End If
Next
Items
목록 의 다음 항목으로 이동하는 방법이 있는지 궁금 합니다. 나는 대부분의 사람들이 왜 그 Else
문장을 사용하지 않는지에 대해 적절하게 물을 것이라고 확신 하지만, 나에게 “Do Something”코드를 감싸는 것은 가독성이 떨어지는 것처럼 보인다. 특히 더 많은 코드가있을 때.
답변
For Each I As Item In Items
If I = x Then Continue For
' Do something
Next
답변
내가 사용하는 것 Continue
대신에 문을 :
For Each I As Item In Items
If I = x Then
Continue For
End If
' Do something
Next
이것은 반복자 자체를 이동하는 것과 약간 다릅니다. 이전의 모든 것이 If
다시 실행됩니다. 보통 이것은 당신이 원하는,하지만하지 않으면 당신은 사용해야합니다 GetEnumerator()
다음 MoveNext()
/ Current
명시 적으로보다는 사용하여 For Each
루프를.
답변
이건 어떤가요:
If Not I = x Then
' Do something '
End If
' Move to next item '
답변
다음 코드는 좋은 습관이 아님을 분명히하고 싶습니다. GOTO 레이블을 사용할 수 있습니다.
For Each I As Item In Items
If I = x Then
'Move to next item
GOTO Label1
End If
' Do something
Label1:
Next
답변
Continue For
실패를 시도했을 때 컴파일러 오류가 발생했습니다. 이 과정에서 ‘이력서’를 발견했습니다.
For Each I As Item In Items
If I = x Then
'Move to next item
Resume Next
End If
'Do something
Next
참고 : 여기서 VBA를 사용하고 있습니다.
답변
“계속”만 허용되는 표준입니다 (나머지는 “스파게티 코드”로 이어짐).
적어도 “continue for”를 사용하면 프로그래머는 코드가 루프의 맨 위로 직접 이동한다는 것을 알고 있습니다.
그러나 순수 주의자들에게는 순수한 “비 스파게티”코드이기 때문에 이와 같은 것이 가장 좋습니다.
Dim bKeepGoing as Boolean
For Each I As Item In Items
bKeepGoing = True
If I = x Then
bKeepGoing = False
End If
if bKeepGoing then
' Do something
endif
Next
코딩의 편의를 위해 “계속”은 괜찮습니다. (하지만 댓글을 남기는 것이 좋습니다).
“계속”사용
For Each I As Item In Items
If I = x Then
Continue For 'skip back directly to top of loop
End If
' Do something
Next