Hauptmenü

DOIF Syntaxfrage

Begonnen von olwaldi, 29 September 2022, 07:31:20

Vorheriges Thema - Nächstes Thema

olwaldi

Mir ist nicht klar, wie die richtige Syntax von DOIF im Perlmodus ist. Und zwar verstehe ich nicht, warum man dann hinter dem DOIF erstmal ein if-Statement hat statt einer Bedingung. Und weiter ist mir unklar, wie die Unterscheidung zwischen else und DOELSE funktionieren kann..
Hier mal symbolisch angedeutet:
define SomeTest DOIF {
  if ([something:somereading:d] > 0) {
     GreaterZero;
  } else {
     Zero;
  }
} DOELSE {
  WhenRunning;
}

Mein WhenRunning läuft doch so eigentlich nie?

Daher hätte ich eher diese Syntax erwartet
define SomeTest DOIF ([something:somereading:d] > 0) {
     GreaterZero;
} DOELSE {
  Zero;
}


Was ist richtig?


Grüßle, Michael

Damian

Zitat von: olwaldi am 29 September 2022, 07:31:20
Mir ist nicht klar, wie die richtige Syntax von DOIF im Perlmodus ist. Und zwar verstehe ich nicht, warum man dann hinter dem DOIF erstmal ein if-Statement hat statt einer Bedingung. Und weiter ist mir unklar, wie die Unterscheidung zwischen else und DOELSE funktionieren kann..
Hier mal symbolisch angedeutet:
define SomeTest DOIF {
  if ([something:somereading:d] > 0) {
     GreaterZero;
  } else {
     Zero;
  }
} DOELSE {
  WhenRunning;
}

Mein WhenRunning läuft doch so eigentlich nie?

Daher hätte ich eher diese Syntax erwartet
define SomeTest DOIF ([something:somereading:d] > 0) {
     GreaterZero;
} DOELSE {
  Zero;
}


Was ist richtig?


Grüßle, Michael

Im Perlmodus gibt es keine DOELSE-Zweige. Du kannst beliebig viele Blöcke definieren {...}, in denen du dann Perlsyntax anwendest, wie z. B. if(){}else{}

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

olwaldi

Danke, dann ist's mir klar.

Grüßle, Michael