Im Buch beschreibst du es so:
''Sie beginnt mit einem Event BeginPlay, an das sich eine ForEach-Node anschließt: angefangen bei Element 0 bis hin zur Länge des Arrays minus eins. Würden wir nur die reine Länge des Arrays benutzten, würde ForEach einmal, zu viel ausgeführt werden.''
Ich verstehe nicht ganz wie dieses einmal zu viel zustande kommt. Heißt das die ForEach-Node würde bei jeder Array die man so anbindet immer so bald sie an ihre End Position kommt (in unserem bsp Postion 4) einfach noch eine Imaginäre 5te Position hinzufügen, würde man das ganze nicht mit -1 unterbinden?
Okay, sorry da ist jedenfalls schon mal ein Fehler in dem Zitat, da die erste Node eine ForLoop-Node und nicht eine ForEach Node ist. Da muss wohl etwas beim korrigieren oder Indexierung schief gelaufen sein.
Aber ich hoffe du hast dennoch verstanden das es am Anfang um die ForLoop-Node geht und nicht um die ForEach.
Ich hoffe es hilft dir auch wiederum hier dir das Bildlich zu verdeutlichen.
Wenn wir die ForLoop so benutzen würden um als ersten Index 0 und als letzten Index die länge des Arrays, so würde der Loop Body 6 mal ausgeführt werden. Wenn wir anschließend den Index innerhalb des Loop Body benutzen würden so würde dies 5 mal gut gehen, aber beim letzten Durchgang einen Error abgeben.
0 - Kein Problem
1 - Kein Problem
2 - Kein Problem
3 - Kein Problem
4 - Kein Problem
5 - Error
Um dies zu umgehen aber den Index ohne weiteres benutzen zu können rechnen wir die Länge - 1 damit der Index immer als "Last Index" den letzten Index hat.
Alternativ kann man natürlich auf den First Index und Last Index von 1 bis länge des Arrays gehen lassen. Dann muss man aber um Errors zu vermeiden den LoopBody Index -1 rechnen.
Bei einer ForEach-Loop im zweiten Teil des Beispiels kann sowas nicht passieren, da man keine manuelle angaben macht und das Array als solches verwendet. Dann gibts auch keine Errors.
Ich muss hier nochmal nachfragen da das Wort Index ziemlich oft gefallen ist. Mir ist bewusst das First Index & Last Index die jeweils Erste bzw Letzte Position eines Arrays darstellt (In unserem Fall Postion 0 & 4). Im letzten abschnitt benutzt du allerdings nur das Wort Index, wenn du da von Index redest sprichst du da Explizit denn First- bzw Last- Index an?
Genau da meinte ich explizit den First Index und Last Index aus der Node und nicht den eigentlichen Index. Diese ganzen Begriffe können schnell verwirrend wirken, sorry.
Hier auch nochmal, wenn du Index sagst meinst du damit First- bzw Last- Index oder meinst du damit alle Postion innerhalb der beiden und warum ist es Irrelevant für den Loop Body? (Weil eh alle Index durch gegangen werden?)
Eine weitere Frage dies bezüglich, warum genau hast du das Array die Länge minus 1 an Last Index angeschlossen statt an Frist Index,
Also der Index ist dann vor allem wichtig wenn du in auch verwendest z.b. in einer Get-Node.
Hier nochmal das Bild von eben. Wenn wir aktiv den Index des Loop Bodys verwenden ist der Richtige Index es wichtiger Bestandteil des ganzen und kann dann wie auf den Bild zu einem Error führen wenn der jeweilige Index im Array nicht existiert.
Der ForLoop addiert nur pro Durchgang eine lokale variable und subtahiert nicht. D.h. es kann nur in eine Richtung funktionieren sonst wird gar nichts ausgegeben.
So schaut die ForLoop intern aus:
um sagen wir mal 3 Postionen von unserem bsp ausgeben zu lassen müsste ich bei Frist Index bei ForLoop von einer 0 zu einer 4 umschreiben?
Nein, gehen wir mal davon aus du bist das komplette Array durchgegangen und hast es sortiert. Anschließend willst du die Top 3 Ergebnisse ausgeben lassen. Dann kannst du das einfach so machen:
Der Loop Body wird 3 mal ausgeführt und um der "Get"-Node bekommst du die Top 1, Top 2 und Top 3 Ergebnisse aus Index 0, Index 1 und Index 2.
Das ist mir durch aus bewusst, aber bevor ich mit den Bausteinen Experimentieren kann, muss ich sie in ihrer Funktionalität verstehen. ^ ^
Wie gesagt, ich habe 0 Programmier Kenntnis und jemand der etwa C++ oder andere Programmier Sprachen schon beherrscht dürfte diese Aufgabe wesentlich eindeutiger gegenüber stehen als ich.
Oh man das war jetzt echt viel, sry sollte ich es nicht so einfach rallen, ich gebe mein bestes alles so gut es geht in meinen Schädel zu drücken und zu verstehen. Danke auf jeden fall für die mühe es mir zu erklären.
Kein Problem, für mich waren Arrays anfangs auch sehr kompliziert und ich habe oft Fehler mit falschen Indexen gehabt. Kann das also alles gut Nachvollziehen.
Sorry falls ich nicht ganz in der Lage bin das vernünftig zu erklären aber ich hoffe dir jetzt nochmal ein bisschen näher gebracht zu haben wie das alles so funktioniert, wenn nicht kann ichs gern weiter versuchen.
Vom Prinzip kannst du dir Denken (Ich will Position 4 haben. Also 4 - 1 = Index 3. Ich brauche Index 3)
Aber wie gesagt falls noch weitere Fragen bestehen oder es immer noch unklar ist helfe ich gerne weiter.