(erledigt )nochmal if elsif ...

Begonnen von riker1, 11 Oktober 2018, 15:06:55

Vorheriges Thema - Nächstes Thema

riker1

Hi

habe nun einiges nochmal gelesen und versucht.

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.htmlt


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


FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

riker1

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
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Beta-User

Abbrechen trifft es m.E. nicht. Das Programm macht nach der else {]-Anweisung (selbe Ebene) weiter, wenn da was steht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors