Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei eval mit mehreren Bedingungen

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

    Hilfe bei eval mit mehreren Bedingungen

    Hallo,

    ich möchte ein eval mit mehren Bedingungen realisieren.

    Das item1 soll
    - bei value bleiben, wenn item2 ==1 und item3==1
    - auf den Wert x gesetzt werden wenn, item2==1 und item3==0
    - auf den Wert y gesetz werden wenn item2 ==0

    Der eval_trigger läuft auf item2 und item3.

    Ohne das item3 sieht es so aus.

    eval = value if sh.rtr.wohnen.automatik() == 1 else 20
    eval_trigger = rtr.wohnen.automatik

    Hat jemand einen Tipp?
    DANKE

    #2
    Kann's grade nicht testen und komme nicht an mein items-File, aber sowas in der Art hier sollte klappen:

    Code:
    eval = 1 if (sh.item2()==1 && sh.item3()==1) else (1 if sh.item2() else 0)
    eval_trigger = item2 | item3
    Ich bin mal davon ausgegangen, dass alles boolsche Werte sind - bei num müsste die hintere Abfrage etwas feiner formuliert werden.

    /tom

    Kommentar


      #3
      Tom
      Danke für die schnelle Antwort!
      Es funktioniert, wenn man "&&" durch "and" ersestzt. Ansonsten kommt ein Syntax Fehler.
      DANKE

      Kommentar


        #4
        ... noch einen weitere Frage:
        Lässt es sich auch noch unterbringen, dass der zugewiesene Wert bei einer Bedingung "value" entspricht bis zu einem definierten Maximum?
        Bedeutet:
        Das item1 soll
        - bei value bleiben, wenn item2 ==1 und item3==1
        - bei value bleiben bis maximal Wert x, wenn item2==1 und item3==0
        - auf den Wert y gesetz werden wenn item2 ==0
        Zuletzt geändert von Sisamiwe; 05.01.2017, 17:38.

        Kommentar


          #5
          Dürfte ohne Hilfsitems wohl unübersichtlich werden. Schnell mal aus dem Kopf hingeschrieben (ungetestet):

          Code:
          [item1]
              type = num
              enforce_updates = false
              eval = self() if (sh.item2()==1 and sh.item3()==1) else (sh.item2_1() if sh.item2() else wert_y)
              eval_trigger = item2 | item3
          
          [item2]
              type = bool
          
              [item2_1]
                  type = num
                  eval = sh.item1() if (sh.item1()<wert_x) else wert_x
                  eval_trigger = item1 | item2
          
          [item3]
              type = bool


          So eine innere Stimme sagt mir, dass das unschön aussieht und vermutlich auch noch wesentlich leichter gehen sollte, aber komm grad nicht drauf ...

          /tom
          Zuletzt geändert von Tom Bombadil; 05.01.2017, 18:55.

          Kommentar

          Lädt...
          X