Hallo,
sind 2 Typen string erforderlich ?
Es gibt nur einen Typ string. Der steht für jede beliebige Zeichenkette. Diese Zeichenketten können jedes Zeichen (auch Leerzeichen, Zeilenumbrüche, usw. - auch ganze Texte) enthalten.
Manchmal, z.B. bei Indizes einer collection sind nur Zeichenketten die keine Leerzeichen enthalten zulässig. (z.B. Namen von readings oder Namen von Devices). Deshalb wurde eine Unterklasse word eingeführt. Jeder Wert von Typ word ist auch ein string. Man kann einer Variablen von Typ string auch einen Wert von Typ word zuweisen. Der wird automatisch konvertiert. (siehe
http://lambda-script.org/handbuch.php#4.2) Eigentlich dürften so beim praktische Programmieren kaum Probleme auftreten. Wenn doch, kannst du mir mal ein konkretes Beispiel schicken.
sind 2 Typen Zeit erforderlich, wäre es nicht möglich, moment als timespan mit Dauer eine Sekunde zu definieren ?
moment und timespan sind völlig verschiedene Dinge:
moment: Die Klasse moment repräsentiert Objekte, die einen bestimmten Zeitpunkt definieren. (siehe
http://lambda-script.org/handbuch.php#4.1.6) Konkrete Zeitpunkte sind: Der Beginn und das Ende eines Fußballspiels, oder der Moment in dem der erste Mensch den Mond betreten hat.
timespan: Die Klasse timespan repräsentiert Objekte, die eine bestimmte Zeitspanne beschreiben. Eine Zeitspanne ist die Differenz zwischen zwei Objekten von Typ moment. So ist die aktuelle Uhrzeit ein timespan und genau die Zeitspanne vom Beginn des heutigen Tages bis jetzt. (siehe auch:
http://lambda-script.org/handbuch.php#4.1.7) Konkrete Zeitspannen sind: 90 Minuten Spieldauer, oder die Zeit die man braucht, um von der Erde bis zum Mond zu fliegen.
könnte man dem Compiler beibringen, die runden Klammern bis zu den jeweiligen Grundfunktionen 'selbst' zu setzen ?
Hier weiß ich nicht genau was du meinst.
Der zentrale Begriff bei der Programmierung in lambda-script ist "Kommando". Ein Kommando ist eine Folge von Symbolen und Werten und eventuell Blöcken. Es beginnt mit dem ersten Zeichen und endet mit einem Semikolon.
Manchmal ist ein Wert auch wieder ein berechneter Ausdruck. Dann wird das Kommando, das diese Berechnung ausführt, in runde Klammern eingeschlossen an die Stelle des Wertes geschrieben. (siehe
http://lambda-script.org/handbuch.php#3.6) Diese Klammern muss man schon selbst setzten. Auch der Rechner weiß nicht, was du berechnen möchtest.
1 + (3 + 3) * 7; ist etwas anderes als 1 + (3 + 3 * 7);
Ich gebe dir Recht, wenn du beklagst, das der Editor der in FHEM eingebaut ist, keine IDE für lambda-script darstellt. So etwas wie Typkontrolle während des Schreibens und Autovervollständigung wären schon praktisch. Auch ein Debugger wäre toll. Das ist das Nächste was ich, wenn lambda-script 1.1 fertig ist, angehe.
Gruß
Dieter