Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Rules - For Schleifen ?

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

    [Codebeispiel] - √ - Rules - For Schleifen ?

    Hallo Zusammen,

    Ich hab mir grad im Wiki die Rules Dokumentation nochmals durchgelesen. Ich hab auch schon ein paar eigene .rules files am laufen . Ich wollte bei mir etwas 10x ablaufen lassen....

    Also hab ne einfache Syntax Frage bezüglich Schleifen die man wahrscheinlich mit einem einfachen ja oder Nein beantworten kann :-). Es gibt viele "while" und If Beispiele aber ich hab noch nirgends so was wie

    Code:
    for (var i = 0 ; i < s.length ; i++)
    {
      println(s.subString(0,i)
    }
    Das Wiki sagt :
    Note: The rule syntax is based on Xbase and as a result it is sharing many details with Xtend, which is built on top of Xbase as well. As a result, we will often point to the Xtend documentation for details.
    Dieser Code extraxt oben ist aus der xtent docu page.

    Hab mich nur gefragt ob das unterstützt wird, bzw. wenn ja wie die korrekte Syntax dafür ist?

    --- Natürlich kann ich mir das auch mit einer While schleife und einer Variable bauen aber Fragen kann man ja ma dachte ich mir.

    Grüsse
    Bkumio

    #2
    Hi,

    Basic For Loop

    Sollte eigentlich gehen. Habe es noch nicht ausprobiert...

    Gruß!

    Kommentar


      #3
      Hallo bkumio,

      mit einer for Schleife kann ich jetzt nicht helfen, aber wenn du schon die while Schleifen gefunden hast, warum nimmst du sie dann nicht einfach?

      Code:
      var i =0
      while(i<10){
      i++ // falls das nicht geht i=i+1
      //tue dinge
      }
      würde auch bis 10 zählen und dann abrechen

      lg
      stefan

      Kommentar


        #4
        ... weil ich es eleganter finde :-).

        Nein, Spass beiseite ich habs natürlich mittlerweile schon mit der While schleife in meiner Rule gemacht, aber ich finde man sollte schon die Bordmittel ausnutzen wenn es geht, darum würde ich schon noch gerne wissen ob und wie.
        Die "for" Schleife geht nicht so leider nicht. Der Designer (v1.5.1) meckert so ziemlich alles an (Siehe Bild Anhang)

        Ich hab auch mal I++ mit i=i+1 ersetzt, ohne Wirkung.

        Grüsse
        bkumio
        Angehängte Dateien

        Kommentar


          #5
          Hi,

          Zitat von bkumio Beitrag anzeigen
          ... weil ich es eleganter finde :-)
          wenn wir über Eleganz sprechen, würde ich den Loop so formulieren:

          Code:
          (1..10).forEach {
            // do something
          }
          Gruß,

          Thomas E.-E.
          Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

          Kommentar


            #6
            Hallo Thomas , alle,

            interessant und in der Tat sehr elegant :-) . Du musst (denke ich) nur noch die lambda expressions [] nehmen anstatt die {} , sonst hat der Designer gemeckert.
            Auch hab ich (glaub ich) rausgefunden wir ich jetzt den "For" code schreiben muss:
            Code:
             // Beispiel ForEach Schleife 
              
              (1..10).forEach
              [
              // do stuff
              ]
              
             // oder halt als For schleife so :-) :
             
             for (i : 0 .. 10)
             {
                // do stuff
             }
            bin nur grad nicht zuhause um rauszufinden ob die Rule so auch so tut, mach ich aber heut Abend und lass ich es euch wissen. Ich meinte aber mal gehört zu haben das man innerhalb der [] nicht mehr auf variablen ausserhalb der expression zugreifen kann, was wiederrum für die for schleife sprechen würde....

            Anyway, ich denke wir sind uns einig, Hauptsache am Ende tuts :-)

            Gruss
            Bkumio

            Kommentar


              #7
              ... code funktioniert :-) wieder was gelernt!

              Code:
               // Beispiel ForEach Schleife 
                
                (1..10).forEach
                [
                // do stuff
                ]
                
               // oder halt als For schleife so :-) :
               
               for (i : 0 .. 10)
               {
                  // do stuff
               }

              Kommentar


                #8
                Hallo,
                eine Zusatzfrage, wie kann ich denn so eine Schleife vorzeitig verlassen, also "break" und "exit" meckert der Designer an.

                Holger

                Kommentar


                  #9
                  Müsste ich jetzt auch noch mal in der Xbase docu nachlesen...

                  Aber wenn du mit einer Bedindung die Schleife verlassen willst würde ich eh eine "While" schleife verwenden, dann kannst du ja nach jeder iteration prüfen ob du weitermachen willlst.....


                  Grüsse
                  bkumio

                  Kommentar

                  Lädt...
                  X