@maxpd sagte in Mysteriöser Zeittrigger:
@asgothian aber wie ist es denn in anderen Programmiersprachen? schreibt man dort auch erst Werte in eine variable um die am Schluss wieder in den Wert zu schreiben? kommt mir umständlich vor. in meinem Fall war das nur ein Beispiel. von diesem Wasserfilter gibt es noch 5 weitere.
Das ist eine Abwägungssache. Dabei hilft es, sich die Objekte als eine Datenbank vorzustellen, sprich der Baustein "Wert von Objekt ID targetID." bzw. der JS Befehl "getState(targetID).val" übersetzt sich in Umgangssprache in "hole aus der Datenbank das Objekt mit der ID targetID und gib mir dessen Wert.
Das umgekehrte passiert beim Schreiben. Diese Operationen kosten also Zeit. Inzwischen ist Blockly so umgestellt worden das darauf Rücksicht genommen wird, früher war es aber so das die Kombination aus erst einen Wert in ein Objekt hinein schreiben und diesen danach direkt wieder herauslesen zu interessanten Effekten geführt hat. Mal hatte man den korrekten, mal den alten Wert.
Deswegen hat sich (für mich) eingebrannt:
Objektwerte in einem Skript nach Möglichkeit einmal lesen und einmal schreiben. Immer erst lesen, dann schreiben, nie umgekehrt.Wenn ich also einen Objektwert mehrfach benötige (für Ausgaben, Berechnungen, Bedingungen) dann hole ich den immer in eine Variable (1x)
Wenn ich den nur einmal benötige lasse ich das.
Und wenn ich innerhalb eines Triggers irgend eine Eigenschaft des den Trigger auslösenden Objekts brauche dann mache ich das wenn möglich über den oben beschriebenen Baustein - der wird vom Trigger bereits gefüllt, da muss ich nicht "nochmal in die Datenbank schauen", sozusagen.
A.