Startseite › Foren › Deutsches LiveCode-Forum › Benannte Parameter
- Dieses Thema hat 13 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 4 Monaten von Klaus Major.
-
AutorBeiträge
-
-
Juni 19, 2020 um 21:36 Uhr #21457
Hallo zusammen,
nach meinen Recherchen kennt Livecode keine benannten Parameter.
Ist es sinnvoll, dies über ein Array zu lösen?LG Dirk2
-
Juni 19, 2020 um 21:43 Uhr #21461
Hallo Dirk,
was genau ist ein “benannter Parameter”?
Ich kenne nur Livecode, daher muss ich nachfragen.Gruß
Klaus
-
Juni 19, 2020 um 21:49 Uhr #21464
Hallo Klaus,
bei Livecode ist die Reihenfolge der Parameter entscheidend. Bei benannten Parametern ist die Reihenfolge egal.
LG Dirk2 -
Juni 19, 2020 um 21:54 Uhr #21465
Bei Verwendung benannter Argumente bleibt es Ihnen erspart, sich an die Reihenfolge von Parametern in den Parameterlisten von aufgerufenen Methoden zu erinnern oder sie nachzuschauen. Der Parameter für jedes Argument kann vom Parameternamen angegeben werden. Eine Funktion, die beispielsweise Details zu einer Bestellung ausgibt (z.B. Verkäufername, Bestellnummer und Produktname), kann standardmäßig aufgerufen werden, indem anhand der Position Argumente in der Reihenfolge gesendet werden, die von der Funktion definiert wurde.
PrintOrderDetails(“Gift Shop”, 31, “Red Mug”);Wenn Sie sich nicht an die Reihenfolge der Parameter erinnern, aber deren Namen wissen, können Sie die Argumente in einer beliebigen Reihenfolge senden.
PrintOrderDetails(orderNum: 31, productName: “Red Mug”, sellerName: “Gift Shop”);PrintOrderDetails(productName: “Red Mug”, sellerName: “Gift Shop”, orderNum: 31);
-
Juni 19, 2020 um 22:03 Uhr #21466
Aha, danke. In welcher Programmiersprache ist gibt es diese benannten Parameter?
Livecode ist anders, wie Du sicher schon festgestellt hast.
Daher würde ich Dir hier zu Arrays raten, wenn Du benannte Parameter benötigst und “wenn Sie sich nicht an die Reihenfolge der Parameter erinnern”. 😀 -
Juni 19, 2020 um 22:07 Uhr #21467
😉 Danke
-
Juni 19, 2020 um 22:09 Uhr #21468
Beim Ms Gedöns
-
Juni 19, 2020 um 22:23 Uhr #21469
Beim Ms Gedöns
AHA! Würde ich nun aber auch nicht als “der Weisheit letzter Schluss” bezeichnen… 😀
-
Juni 20, 2020 um 15:24 Uhr #21477
Hi,
das kann man ja dann einfach selber im Handler machen?
Nehmen wir das Beispiel:
PrintOrderDetails(productName: "Red Mug", sellerName: "Gift Shop", orderNum: 31);
Man kann einen Handler bauen, dem die Reihenfolge der Parameter egal ist, weil er die bennanten Parameter selbst erkennt. Das geht allerdings nicht in der oben eingesetzten Notation, weil die Parameter in Livecode immer Container sein müssen, d.h. entweder eine Variable, ein Array oder ein String in Quotes).
Bauen wir den Aufruf also um: PrintOrderDetails(“productName:Red Mug”, “sellerName:Gift Shop”, “orderNum:31”)
Dieser Funktionsaufruf kann von folgendem Handler auch bei beliebiger Reihenfolge der Parameter korrekt verarbeitet werden:
function PrintOrderDetails repeat with i = 1 to the paramCount put param(i) into tParameter set itemdelimiter to ":" put item 1 of tParameter into tKey put item 2 of tParameter into tValue switch tKey case "productName" put tValue into tProductName break case "sellerName" put tValue into tSellerName break case "orderNum" put tValue into tOrderNum break end switch end repeat return "ProductName:" && tProductName & cr & "SellerName:" && tSellername & cr & "OrderNum:" && tOrderNum end PrintOrderDetails
Einfach mal testen, es kommt immer dasselbe heraus:
answer PrintOrderDetails("productName:Red Mug", "sellerName:Gift Shop", "orderNum:31") answer PrintOrderDetails("sellerName:Gift Shop", "productName:Red Mug", "orderNum:31") answer PrintOrderDetails("orderNum:31", "productName:Red Mug", "sellerName:Gift Shop")
Happy Coding mit Livecode!
Torsten-
Juni 20, 2020 um 15:42 Uhr #21478
Vorteil:
– Reihenfolge egal
– man braucht mein Aufruf nicht alle Parameter anzugeben und erspart sich Fehler bei vielen Parametern z.B. ” Befehl(tParam,,,1)
– intern locker erweiterbarProblem:
– man sollte überlegen, ob als Value auch Werte mit “:” vorkommen können. Wenn ja, dann muss man den Code noch etwas anpassenput param(i) into tParameter set itemdelimiter to ":" put item 1 of tParameter into tKey if the number of items in tParameter > 2 then repeat with j = 2 to the number of items of tParameter put item j of tParameter into item j-1 of tValue end repeat else put item 2 of tParameter into tValue end if
Ach, Livecode macht so einen Spass 🙂
Happy Coding!
Torsten
-
-
Juni 20, 2020 um 21:40 Uhr #21479
Danke Torsten,
du hast mir sehr geholfen.
Weil ich ja so vergesslich bin 😉 -
Juni 21, 2020 um 12:27 Uhr #21486
Hallo Dirk2,
das “VERGESSLICH” kann ich nur Großschreiben. Ich habe jetzt fast 1 Monat nichts mehr gemacht vom LiveCode.
Ich bin immer noch an meiner “Uhr” dran. Da habe ich ein Problem > Die Variablen Verteilung der Zeiten von Stunde, Minute und Sekunde habe ich ins global, also ganz vorne hingesetzt.
Wenn ich die jetzt benutzen möchte, Weiter unten im Programm, funktioniert es einmal da und einmal dort wieder nicht. Die eingestellte Zeit lässt sich mit der Systemzeit einmal berechnen und auf anderer Stelle wieder nicht. Die eingestellte Zeit hat natürlich immer andere Variable-Namen um einer Verwechslung zuvor zu kommen.
Irgend etwas ist da bei mit faul.
Was der Grund ist, ich weiß es nicht.
Hat da vielleicht von Euch jemand eine Idee?Danke,
GerryS-
Juni 21, 2020 um 14:19 Uhr #21491
Hi Gerry,
am besten mal den Code ins Forum stellen, sonst ist das immer schwierig zu beurteilen.
Beste Grüße
Torsten
-
-
Juni 21, 2020 um 14:36 Uhr #21492
Hi Gerry,
bitte, bitte, bitte, erstelle einen neuen Thread für Dein Problem, sonst muss ich das tun, danke!
Gruß
Klaus
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.