Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu systemstart()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    A la C? Das habe ich geliebt, allerdings in den 1990ern. Wartbar ist das nicht, und Kollegen haben nach Steinen gerufen.

    Ein break wäre mE auch mit Blick auf die ungewöhnliche if...then... - Semantik notwendig und würde viele Probleme lösen.
    KNX, openHAB 4.3, EibPC²

    Kommentar


      #32
      Vielleicht habe ich was nicht 100% verstanden?

      Nehmen wir ein (absolut unsinniges) Konstrukt, das heute 10 verschiedene, diskrete Werte in der Variablen a behandeln soll und entsprechend die Variable b setzen:

      Code:
      if a == 1u08 then {
          b = 10u08 * a;
      } endif
      if a == 2u08 then {
          b = 11u08 * a;
      } endif​
      if a ==3u08 then {
          b = 20u08 * a;
      } endif​
      if a == 4u08 then {
          b = 25u08 * a;
      } endif​
      if a == 5u08 then {
          b = 40u08 * a;
      } endif​
      if a == 6u08 then {
          b = 70u08 * a;
      } endif​
      if a == 7u08 then {
          b = 80u08 * a;
      } endif​
      ​​​​​​​if a == 8u08 then {
          b = 120u08 * a;
      ​​​​​​​} endif
      ​​​​​​​​​​​​​​if a == 9u08 then {
          b = 360u08 * a;
          strWarnung = $Warnmeldung erzeugen$;
      ​​​​​​​} endif​
      ​​​​​​​​​​​​​​if a == 10u08 then {
          b = 90u08 * a;
      ​​​​​​​} endif​​
      Das sollte doch mit einer (um break und default abgespeckten, switch-ähnlichen Schreibweise gleichwertig und ohne formulierbar sein:

      Code:
      switch a {
          case 1u08: {b = 10u08 * a;}
          case 2u08: {b = 11u08 * a;}
          case 3u08: {b = 20u08 * a;}
          case 4u08: {b = 25u08 * a;}
          case 5u08: {b = 40u08 * a;}
          case 6u08: {b = 17008 * a;}
          case 7u08: {b = 80u08 * a;}
          case 8u08: {b = 120u08 * a;}
          case 9u08: {
                       b = 360u08 * a;
                       strWarnung = $Warnmeldung erzeugen$;
                      }
          case 10u08: {b = 90u08 * a;}
      }
      Das ergäbe doch wesentlich besser lesbaren Code, oder? Auch beim durchscrollen durch den Code gäbe so etwas einen besseren Anhaltspunkt, wenn man gerade was sucht. Und ja, im obigen unsinnigen Beispiel könnte man auch einzeilig arbeiten, aber es geht ja nicht darum, denn meist benötigt man ja mehrere Codezeilen.

      Beim Parsen könnte doch der oben stehende Code zum weiteren kompilieren erzeugt werden.

      Wie gesagt, auf "break" und "default" könnte ich durchaus verzichten, die einzelnen Blöcke wären mit den den geschweiften Klammern eindeutig definiert.
      Zuletzt geändert von klaus_kraemer; Gestern, 15:23.

      Kommentar


        #33
        Zitat von foobar0815 Beitrag anzeigen
        Was hast du als Telegrammrate in den Projekteinstellungen stehen?
        Die Einstellung gab es in EibStudio5 doch gar nicht, oder?
        in der 6er hab ich da aktuell 16, das war der Vorgabewert.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar

        Lädt...
        X