@NyanCat:
Macht es einen Unterschied, ob ich den Wert eines Objektes in einem script jedes mal direkt aufrufe oder den Wert am Anfang auf eine Variable übertrage und diese dann im script nutze? `
Wenn man den Wert nur am Anfang auf eine Variable überträgt, wird die Variable zwar beim Skriptstart initialisiert, aber anschließend nicht mehr mit dem Wert des Datenpunktes aktualisiert. Es ist aber besser, (globale) Variablen mit den Eigenschaften des Trigger-Datenpunktes zu aktualiseren, als jedesmal die komplexe Operation getState(id).val aufzurufen. Beispiel: Einfache Oder-Verknüpfung zweier Datenpunkte:
const idA = '...';
const idB = '...';
// Initialisierung bei Skriptstart
var a = getState(idA).val;
var b = getState(idB).val;
function oder() {
if(a || b) mache was;
else mache was anderes;
}
oder(); // Skriptstart
// Aktualisierung bei Wertänderung der Datenpunkte
on(idA, function(dp) {
a = dp.state.val;
oder();
});
on(idB, function(dp) {
b = dp.state.val;
oder();
});
@NyanCat:
Macht es Sinn die scripte über die Objekte in scriptEnabled automatisch an und aus schalten zu lassen, wenn sie gerade nicht benötigt werden oder etwas tun würden, was gerade nicht gewünscht ist? `
Es macht keinen Sinn, da bei jedem Skriptstart das Skript in den RAM compiliert wird (glaube ich). Außerdem bestehen Skripte aus einem Initialisierungsteil, Funktionen und Triggern. Dass Aktionen nur dann erfolgen, wenn sie gewünscht sind, realisiert man mit Triggern (on(), schedule()), die dann die gewünschte(n) Funktion(en) aufrufen.