FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: riker1 am 11 Oktober 2018, 15:06:55

Titel: (erledigt )nochmal if elsif ...
Beitrag von: riker1 am 11 Oktober 2018, 15:06:55
Hi

habe nun einiges nochmal gelesen und versucht.

https://wiki.fhem.de/wiki/Trick_der_Woche#Struktur_von_.22else_if.22_Verzweigungen
(https://wiki.fhem.de/wiki/Trick_der_Woche#Struktur_von_.22else_if.22_Verzweigungen)

Zitattruktur von "else if" Verzweigungen
define ... notify ... {\
if ... {\
  fhem ("... ;; ...")\
}\
elsif ... {\
   fhem ("... ;; ...")\
}\
elsif ... {\
   fhem ("... ;; ...")\
}\
else {\
  if ... {\
   fhem ("... ;; ...")\
}\
}


andere Darstellung:?
Zitatdefine .... notify .... {\
   if ..... {\
   fhem ("....");;\
   }\
elseif {\
   if ..... {\
   fhem ("....");;\
   }\
elseif {\
   if ..... {\
   fhem ("....");;\
   }\
else {\
   if ..... {\
   fhem ("....");;\
   }\
}}}}

und den alten Post:https://forum.fhem.de/index.php/topic,10871.0.html (https://forum.fhem.de/index.php/topic,10871.0.html)t


Frage 1: wie unterscheiden sich diese obigen strukturen  Strukturen:

also:
elseif {\
   if ..... {\
   fhem ("....");;\
   }\
vs.
elsif ... {\
   fhem ("... ;; ...")\
}\

?



nun mit dem Knoten im Kopf , frage ich mich:
- er läuft doch alle elsif Zweige durch und führt jeweils die alle ? Bedingen alle aus, die zutreffen?
- wie kann ich denn das stoppen, wenn ich nach der ersten Bedingung anhalten will ?


Danke für die Hilfe


Titel: Antw:nochmal if elsif ...
Beitrag von: Beta-User am 11 Oktober 2018, 15:18:01
1. Man kann beliebig viele Unterstrukturen haben (if..., nur dass das hier wenig Sinn macht, wenn keine anderen Befehle in dem Zweig sind, dann kann man die weitere Bedingung gleich ins elsif (<Bed. && Bed.2>)


2. Trifft einer der elsif-Fälle (von oben her durchlaufen) zu, werden die restlichen ignoriert, einschl. else.


3. Abbrechen geht auch, ist aber unschön: return.
Titel: Antw:nochmal if elsif ...
Beitrag von: riker1 am 11 Oktober 2018, 15:22:05
Zitat von: Beta-User am 11 Oktober 2018, 15:18:01

2. Trifft einer der elsif-Fälle (von oben her durchlaufen) zu, werden die restlichen ignoriert, einschl. else.
.

Hi
danke, also er kommt bis zu ersten gültigen und bricht dann ab. Das war auch mein Verständnis, aber irgendwie hat es nicht funktioniert.

dann habe ich wohl in meinem notify  was falsch .....

das hatte ich gefunden und dann doch richtig gelesen.
Zitathttp://www.perltutorial.org/perl-if/

Danke für die Klarstellung
Titel: Antw:(erledigt )nochmal if elsif ...
Beitrag von: Beta-User am 11 Oktober 2018, 15:25:18
Abbrechen trifft es m.E. nicht. Das Programm macht nach der else {]-Anweisung (selbe Ebene) weiter, wenn da was steht.