Kann man "Nebenrechnungen" innerhalb einer Berechnung beilegen?
Ich würde gerne einen Array anlegen welcher aus mehreren "Funktionsteilen" besteht, etwa so:
'Funktion 1' +" "+ 'Funktion 2' +" "+ 'Funktion 3' (sollte in der Ausgabe erscheinen)
nun soll separat eine Berechnung für Funktion 1, 2 und 3 abgelegt werden
Jedoch bin ich mir nicht sicher wie man das anstellt?
Ich hätte es konkret so gemacht.
'Funktion1' +" "+ 'Funktion2' +" "+ 'Funktion3';
let Funktion1 = if X=Y then = "Z" else "abc";
let Funktion2 = if X=Y then = "Z" else "abc";
let Funktion3 = if X=Y then = "Z" else "abc";
Es scheint jedoch nicht ganz zu funktionieren. Wie kann ich diese "Nebenfunktionen" verbinden? bzw. wie genau lautet die Syntax hierfür.
14 Antworten
-
Ohne "=" Zeichen natürlich. Aber der Rest sollte doch stimmen?
'Funktion1' +" "+ 'Funktion2' +" "+ 'Funktion3';
let Funktion1 = if X=Y then "Z" else "abc";
let Funktion2 = if X=Y then "Z" else "abc";
let Funktion3 = if X=Y then "Z" else "abc";
-
Ich weiß nicht, was genau das Ziel ist, aber Wertzuweisungen erfolgen immer mit Doppelpunkt und Gleichheitszeichen, also "let Funktion1 := if ...".
-
Es geht darum die eigentliche Berechnung: 'Funktion1' +" "+ 'Funktion2' +" "+ 'Funktion3'; von der Nebenberechnung:
let Funktion1 = if X=Y then = "Z" else "abc"; let Funktion2 = if X=Y then = "Z" else "abc"; let Funktion3 = if X=Y then = "Z" else "abc";
zu trennen
-
Die Wertzuweisung muss trotzdem mit ":=" erfolgen. Und "if" sollte immer "end" abgeschlossen werden:
let Funktion1 := if X=Y then "Z" else "abc" end;
let Funktion2 := if X=Y then "Z" else "abc" end;
let Funktion3 := if X=Y then "Z" else "abc" end;
-
Das ist leider nicht möglich. Einfache If else abfragen funktionieren, sobald z.B. eine weitere bedingung hinzukommt:
let Funktion1 := if X=Y then "Z" else if X=1 tehn "123" else "abc" end;
dan verschießt Ninox die gesamte Berechnung -.-
-
Was ist nicht möglich? Du müsstest mal mehr Kontext liefern. Die letzte Beispiel-Formel ist ja wieder anders als die vorherige. Ungeachtet anderer Überlegungen zum genauen Ziel der Aktion: Zwei mal "if" erfordert auch zwei mal "end", nur das "else" ist optional. Also
if ... then ... [else ... ] end
Zur Verdeutlichung an deinem Beispiel:
let Funktion1 := if X = Y then
"Z"
else
if X = 1 then
"123"
else
"abc"
end
end;
-
...und/oder: if X ein Textfeld und Y ein String then
*
let Funktion1 := if X = "Y" then
...
*
-
Wobei - wenn X ein Feld bzw. eine Variable vom Typ Text wäre, müsste es weiter unten aber auch heißen if X = "1".
-
So sehe ich es auch. Ninox ist wohl nicht so typsicher und "wandelt" den Integer selbst in Text um. In meiner Nachstellung geht es auch ohne "1", aber ich weiß natürlich nicht über die Beschaffenheit von X und Y (Variable, Text, numerisch) Bescheid. Ganz korrekt ist es dann aber so wie Du es schreibst und auch, dass etwas mehr Kontext dem Rätselraten ein Ende machen könnte, aber ich dachte, dass ich nichts verderben kann mit meinem Einwurf. ;-)
-
Ja, Ninox ist recht tolerant und interpretiert auch manche Ungenauigkeit richtig. Aber eben nur manche ... Verlassen sollte man sich nicht darauf. ;)
-
PS: Und hier im Userforum versuche ich immer, besonders korrekt zu sein. (Was natürlich nicht immer gelingt.)
-
Jetzt verstehe ich das Problem.
für einfache if else abfragen genügt am ende: end; für jede weitere Abfrage innerhalb der if/ else Abfrage muss jeweils ein eigenes "end" angegeben werden. Das bedeutet das wenn innerhalb einer If else abfrage 5 Möglichkeiten bestehen, dann muss die Zeile mit: end end end end end; beendet werden. Eben so viele "end" angaben wie Möglichkeiten.
-
Genau, if und end treten ausnahmslos immer paarweise auf. Auch, wenn man sie verschachtelt. An den Einrückungen, die Ninox vornimmt, lässt sich gut erkennen, welches end zu welchem if gehört.
-
Ninox ist doch aber so schlau und setzt sie selber.. die end Zeichen oder weist darauf hin
Content aside
- vor 3 JahrenZuletzt aktiv
- 14Antworten
- 598Ansichten