EASY Geschrieben 12. Juni 2022 Geschrieben 12. Juni 2022 Hallo, In der Demoanlage "Zug per Namen finden" von @Goetz A197B196-0219-4B99-A9E5-064A6B285503 ist folgendes Skript: local Zugname = controller.link.text -- liest den Zugnamen vom zugehörigen Textfeld local DepotTable1 = $("Depot 1").getEntriesByName(Zugname) local DepotTable2 = $("Depot 2").getEntriesByName(Zugname) if #DepotTable1 > 0 then local number = DepotTable1[1] $("Depot 1"):release(number) elseif #DepotTable2 > 0 then local number = DepotTable2[1] $("Depot 2"):release(number) end wenn ich die Autovervollständigung in Zeile 2 nutze wird bei der Eingabe von local DepotTable1 = $("Depot 1").g dies vorgeschlagen... erst bei der Eingabe von local DepotTable1 = $("Depot 1"):g wird das "richtige" vorgeschlagen... ... um local DepotTable1 = $("Depot 1").getEntriesByName(Zugname) darzustellen. Nun stellt sich mir die Frage warum es mit dem "." funktioniert? ... oder was ist der Unterschied zwischen "." und ":"? Gruß EASY
Goetz Geschrieben 12. Juni 2022 Geschrieben 12. Juni 2022 (bearbeitet) vor einer Stunde schrieb EASY: was ist der Unterschied zwischen "." und ":" Der Punkt trennt Tabellennamen von Tabellenindex, wenn es sich bei diesem Index um einen Bezeichner handelt. Tabelle.Zelle == Tabelle["Zelle"] Wenn der Tabelleninhalt eine Funktion ist, dann sorgt der Doppelpunkt dafür, dass der Teil davor als erstes Argument an diese Funktion übergeben wird. Tabelle:Funktion() == Tabelle.Funktion(Tabelle) Hier habe ich das in einem kurzen Video (10 Minuten) erklärt: Damit ähnelt das hinter dem Doppelpunkt grob den Methoden, die man in Objekt-orientierten Sprachen kennt. Viele Grüße Götz P.S.: Eigentlich sollte es auch in den Zeilen 2 und 3 besser ein Doppelpunkt sein, um das Depot selbst an die Funktion zu übergeben. Neo fängt den fehlenden Bezug offenbar auf, der durch meinen einfachen Punkt verursacht wird. Ich habe das in meiner Demoanlage jetzt korrigiert! Bearbeitet 12. Juni 2022 von Goetz Ergänzungen
EASY Geschrieben 12. Juni 2022 Autor Geschrieben 12. Juni 2022 Hallo @Goetz, danke für Deine Antwort... den "geheimnisvollen Doppelpunt" habe ich mir früher schon mal angesehen (und ich bilde mir ein es verstanden zu haben...) Daß es das MBS damit (anscheinend) nicht so genau nimmt, könnte daran liegen... vor 2 Stunden schrieb Goetz: Neo fängt den fehlenden Bezug offenbar auf, der durch meinen einfachen Punkt verursacht wird ... (manchmal) kann @Neo auch nett sein... Gruß EASY
Goetz Geschrieben 12. Juni 2022 Geschrieben 12. Juni 2022 vor 33 Minuten schrieb EASY: ... (manchmal) kann Neo auch nett sein Obendrein ist er clever und versteht sein Handwerk! Deshalb findest du die Funktion nur nach Eingabe des Doppelpunkts. Weil der besagt, dass jetzt eine Methode für dieses Objekt gewünscht wird. Der einfache Punkt führt zu den Eigenschaften/Variablen.
Andy Geschrieben 12. Juni 2022 Geschrieben 12. Juni 2022 vor 5 Minuten schrieb Goetz: Obendrein ist er clever und versteht sein Handwerk! Jetzt mach aber mal 'nen Punkt
Neo Geschrieben 12. Juni 2022 Geschrieben 12. Juni 2022 Hallo, selbstverständlich bin ich ein netter Typ, aber darüberhinaus hat es technische Gründe, warum der Doppelpunkt eigentlich gar nicht nötig ist, denn die Objekte, die per Lua angesprochen werden, sind lediglich "Proxy-Tabellen", die alle Aufrufe an die internen Studio-Objekte weiterleiten, weshalb es genau genommen kein zusätzliches Self-Argument braucht. Da solche Interna aber für den Nutzer nicht wichtig sind und weil es der Lua-Konvention entspricht, führt die Studio-Dokumentation alle Objektmethoden nur mit dem Doppelpunkt auf. Viele Grüße, Neo
EASY Geschrieben 12. Juni 2022 Autor Geschrieben 12. Juni 2022 Hallo, vor 2 Stunden schrieb Neo: Da solche Interna aber für den Nutzer nicht wichtig sind... ... bei solchen Typen wie mir, weckt es die Neugier... und da ist es schön, wenn so ein netter Typ (wie Du) es [trotzdem] erklärt... Gruß EASY
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden