for(String foo: bar) unnötig?



  • bringt dieses neue sprachkonstrukt irgendwas? außer das es schreibarbeit abnimmt? der compiler macht daraus eine for schleife.


  • Mod

    Das bringt nur weniger Schreibarbeit.



  • Und es kostet ein bischen Performance.



  • KaraHead schrieb:

    Und es kostet ein bischen Performance.

    Inwiefern?

    MfG SideWinder



  • Huch sorry, hab die Schleife mit dem Autoboxing verwechselt 🙄

    Nehme meinen Post zurück, danke für den Hinweis.
    Das kommt davon, wenn man nur halbherzig liest.


  • Mod

    SideWinder schrieb:

    KaraHead schrieb:

    Und es kostet ein bischen Performance.

    Inwiefern?

    Uuhhh... vielleicht ist KaraHead ja so'n Neunmalkluger, der meint, er könnte aus einer normalen for-Schleife noch was rausholen, indem er zum Beispiel folgendes macht:

    int [] array = new int[100000];
    [...]
    int a = 0;
    try
    {
       int i = 0;
       while(true) //Hier spar ich mir ganz viele Bereichsprüfungen.
       {
          a += array[i];
          ++i;
       }
    }
    catch (Exception e)
    {
       // Das hier ist die Abbruchbedingung für die Schleife. 
    }
    

    🤡

    (...das war nicht ernst gemeint)



  • <offtopic>
    @Gregor
    Hmmm, ja wie ist das nicht die bessere Möglichkeit? 😃
    </offtopic>



  • KaraHead schrieb:

    Und es kostet ein bischen Performance.

    Hört's mal echt mit eurer Performance-Sch... bitte auf. Ich weiß ja nicht, was ihr den ganzen Tag so mit einer foreach-Schleife macht. Aber ich iteriere damit nicht nur durch ... ich mach dann mit den Objekten darin meistens auch noch irgendwas !!! 😮 😮
    Und dagegen ist die Langsamkeit von foreach, falls sie überhaupt gegeben ist, vernachlässigbar.

    Gregor schrieb:

    Das bringt nur weniger Schreibarbeit.

    Achja, und es schränkt Fehlermöglichkeiten weiter ein. Dass du sowas nicht weißt... 🤡 👍


  • Mod

    Optimizer schrieb:

    Gregor schrieb:

    Das bringt nur weniger Schreibarbeit.

    Achja, und es schränkt Fehlermöglichkeiten weiter ein. Dass du sowas nicht weißt... 🤡 👍

    Hmmm... tatsächlich. ...aber ich habe noch einen: Es ist ein generischeres Konstrukt. Wenn du dich dazu entscheidest, von einer Liste zu einem Array als darunterliegende Datenstruktur umzusteigen, dann brauchst du an diesem Konstrukt nichts ändern. Früher sahen die unterschiedlichen Lösungen für diese beiden Fälle deutlich anders aus.

    Aber nochmal etwas zum Nachteil: Man hat natürlich nicht mehr den Index des Elementes der darunterliegenden Datenstruktur zur Verfügung. Insofern ist dieses foreach auch kein genereller Ersatz, wenn man etwas mit allen Elementen einer Datenstruktur machen möchte. Manchmal braucht man den Index einfach.

    ...so, jetzt bist du wieder dran. 😃 😃



  • Gregor schrieb:

    ...so, jetzt bist du wieder dran. 😃 😃

    Nein, so ungern ich es unterlasse, aber ich vermag dir in keinem deiner Punkte zu widersprechen. 😃 👍



  • wie kann man nur matlab elemente in die sprache einbauen?


Anmelden zum Antworten