답변:
안타깝게도 exit two levels of for
설명이 없지만 원하는 작업을 수행 할 수있는 몇 가지 해결 방법이 있습니다.
Goto . 일반적으로 사용 goto
은 나쁜 습관으로 간주 되지만 (당연히 그렇습니다) goto
구조화 된 제어문에서 앞으로 점프하기 위해서만 사용 하는 것은 일반적으로 괜찮은 것으로 간주됩니다. 특히 대안이 더 복잡한 코드를 사용하는 경우에는 더욱 그렇습니다.
For Each item In itemList
For Each item1 In itemList1
If item1.Text = "bla bla bla" Then
Goto end_of_for
End If
Next
Next
end_of_for:
더미 외부 블록
Do
For Each item In itemList
For Each item1 In itemList1
If item1.Text = "bla bla bla" Then
Exit Do
End If
Next
Next
Loop While False
또는
Try
For Each item In itemlist
For Each item1 In itemlist1
If item1 = "bla bla bla" Then
Exit Try
End If
Next
Next
Finally
End Try
별도의 함수 : 루프를 별도의 함수 안에 넣습니다 return
.. 하지만 루프 내에서 사용하는 지역 변수의 수에 따라 많은 매개 변수를 전달해야 할 수도 있습니다. 대안은 블록을 여러 줄 람다에 넣는 것입니다. 이것은 지역 변수에 대한 클로저를 생성하기 때문입니다.
부울 변수 : 중첩 된 루프의 레이어 수에 따라 코드의 가독성이 약간 떨어질 수 있습니다.
Dim done = False
For Each item In itemList
For Each item1 In itemList1
If item1.Text = "bla bla bla" Then
done = True
Exit For
End If
Next
If done Then Exit For
Next
goto
실제로 의미가 있다면 기능보다 다른 것보다 낫다고 말할 수 없습니다 .
goto
qbasic에서의 프로그래밍 시절을 기억하기 위해 큰 프로젝트에서 그것을 사용할 것 입니다. 그렇지 않으면 나는 더미 할 것입니다.
Try
/ Exit Try
접근 방식을 선호 하지만 goto
옵션의 팬이 아닙니다 .
루프를 서브 루틴에 넣고 호출 return
goto
솔루션 에는없는 이러한 호출과 관련된 오버 헤드가 있다는 점은 주목할 가치가 있습니다. 물론 코드를 재사용 할 수 있다면 어쨌든 이미 함수에 있어야합니다.
외부 루프를 while 루프로 만들고 if 문에서 "Exit While"을 만듭니다.
goto
더 많은 지침, 더 많은 상세 및 더 많은 들여 쓰기와 똑같은 일을 합니다. 점은 무엇인가?
나는 몇 번 "exit for"를 입력하는 실험을했고 그것이 효과가 있다는 것을 알아 차렸고 VB는 나에게 소리를 지르지 않았다. 내가 생각하는 옵션이지만 단지 나빠 보였다.
최선의 선택은 Tobias가 공유하는 것과 유사하다고 생각합니다. 코드를 함수에 넣고 루프에서 벗어나고 싶을 때 반환되도록하십시오. 너무 깨끗해 보입니다.
For Each item In itemlist
For Each item1 In itemlist1
If item1 = item Then
Return item1
End If
Next
Next
For i As Integer = 0 To 100
bool = False
For j As Integer = 0 To 100
If check condition Then
'if condition match
bool = True
Exit For 'Continue For
End If
Next
If bool = True Then Continue For
Next
for-to 루프를 종료하려면 인덱스를 한계 이상으로 설정하기 만하면됩니다.
For i = 1 To max
some code
if this(i) = 25 Then i = max + 1
some more code...
Next`
아버지.
Exit For item
것은Next item
. "좋은 옛날"에는 명시 적Next
으로 외부 루프 를 사용할 수있었습니다 . 오늘날 VB는 오류를 제공합니다. 물론,Exit For
대신에 더 "건설적" 입니다.