Eigene Funktionen erstellen
14 Antworten
-
Ich hatte bei den anderen Themen auch schon den Eindruck, dass der erste Ausgangsbeitrag immer fehlt. Dachte schon, es läge an mir ... ;)
-
Ja komisch, darum hier nochmal zu meinem Anliegen. Ich würde gerne mal auf die eigenen Funktionen zu erstellen eingehen. Würde gerne mal Anwendungsbeispiele sehen. Hier hab ich mal mit einer Funktion rumgespielt
var x := 1;
var x := x + 1;
let sa := test;
function anrede(sa : text) do
"Sehr geehrte Frau " + test + x + "!"
end; -
zurück zu Funktionen.
die Funktionen dienen dazu, komplizierte sich wiederholende Formeln zu ersparen. Mit dem Befehl "function" deklariert man erstmals eine Funktion, dann nennt man den Namen der Funktion und dann in Klammern Namen des VParameters, der in dieser Funktion vorkommt und auch der Parametertyp, der an die Funktion übergeben wird, muss an dieser Stelle deklariert werden. Also:
function hello (x : text).
Mit dem Befehl "do" kann man dann die eigentliche Formel schreiben:
function hello (x : text) do
end;
Jetzt kann man die Funktion nutzen. Angenommen, es gibt ein Feld "Vorname". Wenn man dort einen Trigger nach Update schreibt:
---
function hello (x : text) do
"Hallo "+ x +", schön dich zu sehen!"
end;
'Begrüßung':=hello(Vorname)
---
Wenn jetzt in Vorname "Leo" geschrieben wird, erscheint im Feld "Begrüßung" ein Text "Hallo Leo, schön dich zu sehen!"
Da ich kein Programmierer bin, schreibe ich hier nur, wie ich die Dinge verstehe. Wenn es eine andere Erklärung gibt, gerne. -
Ja so hatte ich es auch verstanden, mittels trigger hab ich es noch nicht ausprobiert. Aber wenn jemand hier Beispiele für Funktionen hat immer her damit.
-
Hier ein Beispiel:
function test(x:text, y:number, z:date) do
"Ich heisse "+x+" und bin "+y+" Jahre alt. Geschrieben am: "+z
end
Nun kann man diese verwenden:
let name:= "Peter";
let alter:=34;
let datum:=today();
test(name, alter, datum) oder direkt test("Peter", 34, "08.01.2018") ergibt dann:
"Ich heisse Peter und bin 34 Jahre alt. Geschrieben am: 08.01.2018"
Für die ID bei function(name:id) gibt es folgende:
• text
• number
• boolean
• date
• time
• datetime
Eventuell gibt es noch weitere, habe ich aber noch nicht entdeckt. -
@Nik: Bei Facebook würde ich auf "Gefällt mir" klicken, statt dessen hier: Danke für das Beispiel. ;)
-
Hallo AxelE
Verstehe deinen Kommentar gerade nicht. Bei Facebook habe ich aber schon vor einer Weile auf „Gefällt mir“ geklickt ;-) -
Sorry, wollte sagen: Wenn dies Facebook wäre, dann hätte ich bei deinem Beitrag auf "Gefällt mir" klicken können (m. E. einer der wenigen Vorzüge solcher Plattformen, dass man Beiträge auf einfache Weise bewerten kann).
-
Alles klar und besten Dank dir!
Ok in diesem Fall hier noch ein weiteres Beispiel aus der Praxis was man damit machen kann:
let unr := Nr;
function bg(x : number,y : number) do
y := y + 1;
for y from 1 to y do
let p := (create xBudget);
p.(XCheckliste := unr);
p.(BNr := max(XCheckliste.Budget.BNr) + 1);
p.(Art := x);
switch x do
case 1:
p.(Wohnkosten := if y = 3 then 7 else y end)
case 2:
p.(Wohnkosten := y)
case 3:
p.(Wohnkosten := y)
case 4:
p.(Wohnkosten := y)
case 5:
p.('Energie/Kommunikation' := y)
case 6:
p.(Versicherungen := y)
case 7:
p.('Öffentlicher Verkehr/Auto/Motorrad/Velo' := y)
case 8:
p.(Verschiedenes := y)
case 9:
p.(Haushaltsausgaben := y)
case 10:
p.('Persönliche Auslagen' := y)
case 11:
p.(Kinder := y)
case 12:
p.(Gesundheit := y)
case 13:
p.('Übrige Ausgaben' := y)
case 14:
p.('Ferien/Freizeit' := y)
end
end
end;
bg(1, 3);
bg(2, 7);
bg(3, 7);
bg(4, 7);
bg(5, 5);
bg(6, 3);
bg(7, 8);
bg(8, 4);
bg(9, 4);
bg(10, 5);
bg(11, 3);
bg(12, 2);
bg(13, 3);
bg(14, 3) -
Große Klasse!!!
-
Liebe NINOX-Nutzer,
kann man in einer anwenderdefinierten Funktion auch ein Array übergeben? Als Parameter für den Variablentyp wird array leider nicht akzeptiert.
Vielen Dank und beste Grüße
Jörg
-
Hallo Jörg,
kannst du mal bitte ein Beispiel geben?
Eigentlich sollte es so funktionieren:
let MyArray1 := [1, 2, 81];
let MyArray2 := [1, 2, 9 * 9];Gruß, Jörg
-
Hallo Jörg,
vielen Dank für Deine Interstützung! In der Hoffnung, Dich hier nicht falsch verstanden zu haben - mir ging es hierbei allerdings nicht um die Generierung eines Arrays, sondern um die Übergabe eines existierenden Arrays an eine benutzerdefinierte Funktion etwa in der Form
function mache_etwas(myAr : array)
....
end;
mache_etwas(myAr)
Als workaround habe ich inzwischen den folgenden Weg gefunden: Umwandlung des Arrays in einen String mit concat(myAr) und Übergabe als String an mache_etwas. In der Funktion dann Zurück-Umwandlung in Array mit split(myAr, ", ").
Nochmals besten Dank und viele Grüße
Jörg
-
Noch ein Hinweis:
1. Die Aufrufparameter übergiben nur den Wert (call by value), d.h wenn im Rumpf der Funktion die Varable bearbeitet wird, dringt das nicht nach außen.
Beispiel:
let aussen := "Start";
function Hey(input : text) do
input := "Stop"
end;
Hey(aussen);
alert(aussen)2. Variable, die im Rumpf definiert sind, sind auch nur hier gültig, sind also nach außen nicht definiert.
Content aside
- vor 6 JahrenZuletzt aktiv
- 14Antworten
- 5652Ansichten