Klammerung in "readable if"/"lesbar wenn" nicht möglich?
Ich möchte im Script für "readable if"/"lesbar wenn" eine Abfrage verwenden, die eine Klammerung benötigt:
userHasRole("admin") or userHasRole("editor") or (userHasRole("Worker") and 'Status' = 8)
Die Prüfung auf Status soll also nur für die Rolle "Worker" ziehen.
Sobald ich aber diese Abfrage speichere, werden die Klammern entfernt und damit zieht die Prüfung Status = 8 für alle.
Wieso geht das nicht? Gibt es einen Trick?
7 Antworten
-
Ggf. kannst du die Reihenfolge der Argumente verändern, das hat bei mir schon hin und wieder geholfen.
-
Hallo Stefan. Soweit ich es verstehe, klammert der Ninox-Editor nur OR, z.B.
(userHasRole("admin") or userHasRole("editor") or userHasRole("Worker")) and 'Status' = 8
Wenn in deinem Fall die Klammern entfernt werden, dann weil sie unnötig sind, weil die AND Werte als verbunden betrachtet werden. Entweder machst du mal einen Test in einem Funktionsfeld, ob der Wert wirklich das wiedergibt, was er soll - also ob ein true überhaupt möglich ist, oder kannst es mal so versuchen
contains([userHasRole("admin"), userHasRole("editor"), userHasRole("Worker") and Status = 8], true);
Da liegen die Boolean in einem Array und es wird auf true getestet. Für mich ist das manchmal übersichtlicher. Mirko
-
Nicht hübsch, aber wohl zielführend?:
if userHasRole("admin") then true else if userHasRole("editor") then true else if userHasRole("Worker") and 'Status' = 8 then true else false end end end
-
Einmal die Regel AND vor OR verinnerlicht, kann man sich die vielen IF ... ELSE Bedingungen sparen. Das ist natürlich jeder Manns/Frau Sache, wie man skriptet.
Bin kein Informatiker, deshalb: mich würde interessieren, welcher Algorithmus der effizientere ist.
Content aside
- Status Answered
- vor 9 TagenZuletzt aktiv
- 7Antworten
- 63Ansichten
-
5
Folge bereits