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
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.
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
Abbrechen trifft es m.E. nicht. Das Programm macht nach der else {]-Anweisung (selbe Ebene) weiter, wenn da was steht.