heine_jul Posted February 12, 2023 Share Posted February 12, 2023 Ich bastele in der EV von MBS einen möglichst automatischen Containerbahnhof zusammen. Da werden, logisch, auch Variablen verwendet. Die Form ist in etwa folgende: $("Kran_1").variables.kran_x = 0 ich hätte das aber gern ein wenig allgemeiner, etwa so: variable_modul = '$("Kran_1").variables' und dann: variable_modul.kran_x=0 gibt es da eine Lösung? Danke Heinrich Link to comment Share on other sites More sharing options...
Eggu Posted February 12, 2023 Share Posted February 12, 2023 so z.B.: local variable_modul = $("Kran_1").variables variable_modul["kran_x"] = 0 Hinweis: $-Ausdrücke sind keine echten Variablen, sondern Konstanten, also ein Verweis auf ein konkretes Objekt. Gruß Eggu Link to comment Share on other sites More sharing options...
heine_jul Posted February 12, 2023 Author Share Posted February 12, 2023 ha, so einfach, genau das habe ich gesucht. variable_modul.kran_1 geht auch Danke Link to comment Share on other sites More sharing options...
Goetz Posted February 12, 2023 Share Posted February 12, 2023 vor 10 Minuten schrieb heine_jul: variable_modul.kran_1 geht auch Stimmt. In Lua sind beide Schreibweisen erlaubt. Und sie sind gleichbedeutend, also auch austauschbar. Tabelle["Untertabelle"]["Element"] == Tabelle.Untertabelle.Element Die Schreibweise mit eckigen Klammern und Anführungszeichen erlaubt mehr Zeichen (z.B. Sonderzeichen), die bei der anderen Schreibweise unzulässig sind. Deshalb wählt das Studio automatisch die Schreibweise mit Klammern und Anführungszeichen, wenn ein Teil der grafischen EV in Lua gewandelt wird. Link to comment Share on other sites More sharing options...
heine_jul Posted February 12, 2023 Author Share Posted February 12, 2023 ist es nun auch möglich das ganze noch weiterzu treiben? also das "kran_x" wieder durch eine lokale Variable zu ersetzen etwa in der Form: Globale Variable : variable_modul = $("Kran_1").variables Locale Variable : tab="XYZ" variable_modul["kran_x"] = 0 ---- und hier das ["kran_x"] durch die Variable "tab" ersetzen. so das entsteht: variable_modul["XYZ"] = 0 Danke Link to comment Share on other sites More sharing options...
Goetz Posted February 12, 2023 Share Posted February 12, 2023 vor 4 Minuten schrieb heine_jul: ist es nun auch möglich das ganze noch weiter zu treiben? also das "kran_x" wieder durch eine lokale Variable zu ersetzen Ja, selbstverständlich. Dafür gibt es die rechteckigen Klammern. Die können entweder einen Platzhalter (ohne Anführungszeichen!) aufnehmen. Oder einen Bezeichner (mit Anführungszeichen, weil der Bezeichner ein String ist) fu = "bar" object.variables[fu] == object.variables["bar"] Mit Zahlenwerten geht es so: fu = 42 object.variables[fu] == object.variables[42] Die Zahl darf nicht in Anführungsstrichen stehen Link to comment Share on other sites More sharing options...
heine_jul Posted February 12, 2023 Author Share Posted February 12, 2023 Danke. Alles schon angewendet (z.B. als Index einer Tabelle] nur nicht so allgemein begriffen. Link to comment Share on other sites More sharing options...
Eggu Posted February 12, 2023 Share Posted February 12, 2023 Vielleicht hilft hier der Merksatz: "In der Informatik gibt es kein Problem, welches nicht durch einen Pointer auf einen Pointer gelöst werden könnte." Link to comment Share on other sites More sharing options...
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