EASY Posted June 12, 2022 Posted June 12, 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 Posted June 12, 2022 Posted June 12, 2022 (edited) 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! Edited June 12, 2022 by Goetz Ergänzungen
EASY Posted June 12, 2022 Author Posted June 12, 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 Posted June 12, 2022 Posted June 12, 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 Posted June 12, 2022 Posted June 12, 2022 vor 5 Minuten schrieb Goetz: Obendrein ist er clever und versteht sein Handwerk! Jetzt mach aber mal 'nen Punkt
Neo Posted June 12, 2022 Posted June 12, 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 Posted June 12, 2022 Author Posted June 12, 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
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now