Jump to content

MBS Lua Punkt Doppelpunkt


Recommended Posts

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...
1710400906_Bild001.thumb.jpg.ab54c1307f257ca5e13d330d083e4fa8.jpg

erst bei der Eingabe von

local DepotTable1 = $("Depot 1"):g

wird das "richtige" vorgeschlagen...
813516309_Bild002.thumb.jpg.a617563511543c73daacbf5062c84e95.jpg

... 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

Link to comment
Share on other sites

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 by Goetz
Ergänzungen
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...