Ich bin vor kurzem auf RaspberryMatic umgestiegen. Vorher habe ich auf der CCU2 mit Homeputer CL gearbeitet.
Unter Homeputer ist es so, dass Variablen in einem Makro lokal deklariert werden. In anderen Makros können diese Variablen durch Voranstellen des Makronamens angesprochen werden. Die Variablen behalten ihre Werte über das Ende eines Makros hinaus..
Es kann so auch nicht zu Typ-Differenzen kommen, wenn Variablen mit gleichem Namen in verschiedenen Makros unterschiedliche Typen haben, da diese ja effektiv unterschiedliche Variablen darstellen.
Im einem Topic gab es mal zwei Hinweise von Dir zu möglichen Weiterentwicklungen:
undFeature: HM-Skript – Einführen eines ‚global‘ vs. ‚local‘ specifiers für variablen Definitionen sodass variablen dann nach ende eines Skriptes automatisch freigegeben werden bzw. einem art garbage collector zugewiesen werden.
(siehe viewtopic.php?f=34&t=37055 )Feature: Überarbeitung gewisser Interna um ein besseres Multithreading zu erreichen sodass z.B. Programme/Skripte mehr unabhängig (komplettes multithreading wird schwierig bis unmöglich) von einander abgearbeitet werden können.
Könnest Du hier etwas genaueres zum Status Quo sagen und vielleicht einen Ausblick geben, ob es hier eine Weiterentwicklung geben wird.
Mein Verständnis des Status-Quo ist (und bitte korrigiere mich):
1. Scriptvariablen sind global gültig und können daher in allen Scripten mit dem gleichen Namen angesprochen werden.
2. Der jeweilige Typ einer Scriptvariablen kann sich unabhängig von der Deklaration zur Ausführungszeit ändern.
3. (2) führt dazu, dass es kein Problem eine Variable in einem anderen Makro mit einem anderen Typ zu verwenden.
3. Scripte werden nicht im Multithreading ausgeführt, sondern zu einem Zeitpunkt ist immer nur ein Script aktiv.
4. Diese sequentielle Abarbeitung von Scripten verhindert implizit einen konkurierenden Zugriff auf eine Scriptvariable.
5. Eine Freigabe bzw das Aufräumen von nicht mehr benötigten Scriptvariablen gibt es nicht.
Was passiert bei (3) mit dem alten Wert einer Scriptvariablen, wenn es zu einem Typwechsel kommt? Ist später auf der alte Wert wieder vorhanden, wenn wieder mit dem alten Typ auf die Scriptvariable zugegriffen wird?
Ich habe leider keine zusammenfassende Dokumentation gefunden. Es wäre schön, wenn Deine Antwort hilft, für alle, die wie ich noch nicht so tief in der Materie stecken, ein besseres Verständnis zu schaffen.
Vielen Dank im Voraus