Według mojego sposobu myślenia pętla for służy do iteracji w znanym lub możliwym do określenia zakresie.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
co jest równoważne (określenie zakresu i na bok) do:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
Innymi słowy, for
pętla jest po prostu (bardzo przydatnym) cukrem syntaktycznym dla powszechnie stosowanego while
konstruktu.
Jednak widzę wiele for(;;)
konstrukcji w Internecie, które są funkcjonalnie równoważnewhile(true)
Jakie jest tego uzasadnienie? Dlaczego pętla nieskończona dla jest lepsza niż pętla nieskończona podczas?
// Widziałem nawet podręcznik Java, który w ogóle nie używał pętli while! Prowadząc do takich potwornych konstrukcji, jak:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
i for
tutaj, a pytanie się nie zmieni. while(true)
i for(;;)
znaczy to samo. Oczywiście masz silną preferencję while
, inni mogą mieć równie silną preferencję for
. Nie można powiedzieć, że jedno jest bardziej poprawne niż drugie.
for(;;)
zagmatwany. Jest to standardowy idiom C, który udokumentujesz w sekcji 3.5 K&R (2e). Rozumiem, że ci się nie podoba; Ci powinni zrozumieć, że inni wolą oczywiście go (jeszcze nigdy byś go zobaczyć). Może być mniej lub bardziej akceptowalny w językach innych niż C; otagowałeś ten język-agnostyk, który tylko zmniejsza prawdopodobieństwo ostatecznej odpowiedzi. Znów głosowałem za zamknięciem, ponieważ Q nie jest konstruktywne; gdybym się obraził, oznaczałbym jako ofensywne zamiast lub oprócz zamknięcia. To wszystko.
wheeeeeeee { ... }