NEWS
[gelöst] function in function
-
Hi,
habe folgende Herausforderung:
function2 soll in function1 ausgeführt werden.
function1 und 2 sind auf der gleichen Ebene definiert.-> muss ich die function2 der function1 extra übergeben? Oder ist die function2 sowieso global?
-
@ptr sagte in function in function:
Hi,
habe folgende Herausforderung:
function2 soll in function1 ausgeführt werden.
function1 und 2 sind auf der gleichen Ebene definiert.-> muss ich die function2 der function1 extra übergeben? Oder ist die function2 sowieso global?
Zeig mal dein Beispiel.
und mit global hat das gar nichts zu tun. -
@ptr sagte: muss ich die function2 der function1 extra übergeben?
Nein, nur aufrufen.
EDIT: Prinzip:
function function2(x) { // x auswerten } function function1() { let a = 2; function2(a); } function1(); // Aufruf bei Skriptstart
-
@paul53 und @bahnuhr: Habe nun den Rechner da und kann das ganze Szenario darstellen. Vielleicht gibt es ja noch andere Lösungswege...:
https://forum.iobroker.net/topic/62228/multitimeout-wie-function-übergeben-von-blockly-in-js
-
@ptr
Funktioniert etwas nicht? -
@oliverio meine Antwort war ggf. etwas missverständlich formuliert. Die Antwort von paul53 funktioniert.
Unter dem Link versuche ich eine funktion in einer funktion über Ihren Namen aufzurufen.
Dabei übergebe ich den Namen als string, damit Blockly nicht automatisch die Bezeichnung der Variable ändert, falls diese die gleiche Bezeichnung wie die Funktion hat. -> wie ich dann wieder eine funktionsaufruf aus dem String mache ist aktuell das hauptproblem. - und dafür könnte es z.B. auch andere Lösungen geben... -
@ptr
Nur so als Hinweis aus meiner langjährigen beruflichen Erfahrung:
Wenn ein System zu komplex wird, lässt es sich kaum noch warten. Selbst kleinste Änderungen führen dann mit schöner Regelmäßigkeit zu fatalen Fehlern, die aber aufgrund der Komplexität nur schwer zu finden sind.
Die "eierlegende Wollmilchsau" ist also nicht unbedingt die Lösung aller Probleme, sondern verursacht oft nur noch weitere.
Je komplexer ein System/Konstrukt, desto eher knallt es vor die Wand. Und nach releativ kurzer Zeit findet selbst der Entwickler nicht mehr ohne weiteres die Ursache.Aufgaben lieber in kleine Häppchen aufteilen, die sich gut lesen, warten und erweitern lassen.
"... does one thing well" aus dem CleanCode-Umfeld beschreibt das eigentlich ganz gut. Ein Programm (-abschnitt) / eine Funktion soll genau eine Sache machen - und die möglichst gut, schnell und fehlerfrei.Die Scripte mögen zwar jeweils ein wenig kleiner werden, aber das unübersichtliche Konstrukt dahinter wäre mir persönlich ein Graus. Dann lieber konventionell jeweils im Script definieren. Dann weiß man wenigstens, wie etwas funktioniert und wo man einen Fehler suchen muss.
Ich befürchte, Du verrennst Dich da ... prove me wrong
-
@codierknecht du hast Recht. Einfach ist einfach besser. Wenn es einen Timeout-Block in Blockly mit variablem Namen gäbe - wäre alles simpel gelöst.
Habe ich nicht gefunden, daher versuche ich das nachzustellen. Vielleicht hast du eine Idee wie ich das simpler hinbekomme.
Ich habe einen dp-Selektor-trigger der für viele Räume auf dessen Bewegungsmelder hört.
-> ich brauche zu jedem einen individuelles Timeout. vorstellbar, weil das Licht nach 1 Minute erst wieder ausgehen soll.Anderes Beispiel: Tür öffnet -> Anwesenheit setzen. Timeout 15sek: Falls keine Bewegungssensor im Raum=true, dann -> Anwesenheit=false.
Von diesen Anwendungsfällen habe ich ungefähr eine Handvoll. Daher die Idee, ein object pro Skript, dass mir individuelle Timeouts - abhängig von Trigger - benennt.
Es geht um das Thema: https://forum.iobroker.net/topic/62228/multitimeout-wie-function-übergeben-von-blockly-in-js
-
@ptr sagte in [gelöst] function in function:
Es geht um das Thema: https://forum.iobroker.net/topic/62228/multitimeout-wie-function-übergeben-von-blockly-in-js
Hatte ich schon gelesen und antworte daher dort ...