UDF-Struktur

ColdFusion hat mehr als 250 Funktionen in der Sprache. Es ist String-Manipulation Funktionen, Array-Funktionen, Struktur-Funktionen und viele andere Arten von Funktionen. Auch bei dieser Vielzahl von Funktionen, aber manchmal möchten Sie vielleicht Ihre eigene Funktion, die Dinge, die den integrierten Funktionen in ColdFusion kann es nicht. Dieser Artikel beschreibt nicht, wie zu verwenden CFSCRIPT-CFSCRIPT nur, wie man in Verbindung mit der Nutzung nicht definiert benutzerdefinierte Funktionen. Eine benutzerdefinierte Funktion oder UDF, in CFSCRIPT, CFML, oder eine Kombination der beiden gebaut werden. Die folgenden Teile beschreiben, wie man UDFs mit CFSCRIPT bauen. CFSCRIPT UDFs sind sehr natürlich, weil sie die Schaffung Funktion in JavaScript, Java und vielen anderen Programmiersprachen, die Sie vielleicht schon kennen zu imitieren. In der Regel erhält der Funktionen ein oder mehrere Argumente und zurück ein einzelnes Ergebnis. Einige Funktionen (z. B. ColdFusion's Now ()-Funktion) übernehmen keine Argumente, aber fast alle Funktionen haben ein Ergebnis erzielt. Eine grundlegende UDF mit CFSCRIPT gebaut sieht wie folgt aus:

 Funktion GetCurrentTime () (return TimeFormat (Now (), "h: mm: ss tt");) 
  

Die nur vier Dinge, für jede Funktion erforderlich sind, das Schlüsselwort function, der Name der Funktion, die Klammern nach dem Namen und die geschweiften Klammern um den Körper der Funktion. Obwohl die return-Anweisung ist technisch optional, ist zurück, was eine Funktion wirklich sinnvoll, da diese Aussage ist das Ergebnis wieder auf den Code, der die Funktion aufruft. Wir rufen die Funktion, die wir gerade erstellt haben, wie wir es alle eingebauten ColdFusion-Funktion, wie folgt:

 # GetCurrentTime () # 

Wir können meiner Funktion durch die Definition einer lokalen Variablen zu erweitern, wie folgt:

Funktion GetCurrentTime () (var = szTime TimeFormat (Now (), "h: mm: ss tt"); return szTime;)

Mehr über das Schlüsselwort var in den folgenden Teil. Wir können auch Code hinzufügen, um unsere Funktion zwischen der Deklaration von Variablen und die return-Anweisung, wie folgt:

Funktion GetCurrentTime () (var = szTime TimeFormat (Now (), "h: mm: ss tt"); szTime = ReplaceNoCase (szTime, "bin", "am Morgen"); szTime = ReplaceNoCase (szTime, "pm" "Am Abend"); return szTime;)

Das UDF ist ein sehr einfaches Beispiel, das nicht funktioniert keine Argumente. Nun zu einen Blick auf var in more detail. var deklariert eine Variable, die eine Funktion Einheimischen. Wenn wir nicht verwenden var, zum Beispiel könnte man wie folgt vor:

 Funktion myFn () (myVar = 1; return TRUE;)  # myFn () # # # myVar 

Nachdem Sie rufen myFn (), ist myVar zur Verfügung außerhalb der Funktion Code. Das ist, weil jede Variable in CFSCRIPT definiert ist auch vorhanden, CFML. Dies ist sehr schlampig Programmierung, weil Sie möglicherweise unbeabsichtigt erzeugt oder überschreibt Variablen, die Sie waren nicht die Absicht zu beeinflussen. Damit myVar der lokalen bis zur myFn () so, dass sie nicht außerhalb der Funktion zu verwenden, var, als Leck folgt:

 Funktion myFn () (var myVar = 1; return TRUE;) 

Nun versuchen, myVar außerhalb myFn () verwenden, ein Fehler, das ist genau das, was Sie es zu tun wirft. Alle Variablen mit var geschaffen werden müssen initialisiert werden; ColdFusion wirft einen Fehler, wenn sie nicht sind. Und beachten Sie auch, dass man nicht statt dem Schlüsselwort var irgendwo anders als an der Spitze einer Funktion Erklärung an. Funktionen einen einzelnen Wert zurück, wie das folgende Beispiel zeigt:

Funktion myFn () (return TimeFormat (Now (), "h: mm: ss tt");)

Sobald CFSCRIPT Begegnungen eine return-Anweisung, stoppt ColdFusion Ausführen der Funktion und gibt den Wert nach dem Schlüsselwort return an die aufrufende Code. Sie können auch unter bestimmten Bedingungen geben unterschiedliche Werte auf verschiedenen Umständen, wie sie in den folgenden Code ein:

Funktion myFn () (if (IsDefined ( "Client.myVar")) (return Client.myVar;) else (return TimeFormat (Now (), "h: mm: ss tt");))

Jede Kontrolle Pfad in einer Funktion muss einen Wert zurückgeben und erhalten Sie inkonsistente Ergebnisse. Eine beste Praxis ist es daher, eine Standard-Rückgabewert definieren und nur eine return-Anweisung in Ihrer Funktion Erklärung, wie folgt zu verwenden:

Funktion myFn () (var result = TimeFormat (Now (), "h: mm: ss tt"); if (IsDefined ( "Client.myVar")) (result = Client.myVar;) return result;)

Die meisten Funktionen nehmen ein oder mehrere Argumente, wie das folgende Beispiel zeigt:

 Funktion add2 (firstNumber, secondNumber) (return firstNumber secondNumber +;)  # add2 (1,2) # 

Das Argument-Namen in einer Liste in den Klammern hinter der Funktion "definiert. Sie sehen mehr neuartige Nutzungsmöglichkeiten der Argumente in diesem Artikel. Das obige Beispiel verwendet positionelle Argumente, was bedeutet, dass das erste Argument in der Funktion aufrufen, um das erste Argument übergeben wurde in der Funktion, der zweite in der Ausschreibung wurde die zweite in der Funktion, und so weiter. Sie können auch den Namen der Argumente in der Aufforderung, wenn Sie sie in einer anderen Reihenfolge übergeben werden soll, wie folgt:

 # add2 (secondNumber = 2, firstNumber = 1) # 

Diese Syntax ist nicht weit verbreitet, weil es ist etwas schwerer zu lesen, es kann dir helfen, aber wenn Sie nicht die Reihenfolge der Parameter einer Funktion erinnern. Wenn keines der Argumente eine Funktion aufrufen, die genannt werden, müssen jedoch alle Argumente genannt werden. Funktionen sind innerhalb der ColdFusion Template aufgerufen werden, sogar innerhalb einer anderen ColdFusion-Funktion. Nutzen Sie das folgende Beispiel:

 Funktion myFn (myNum, yourNum) (return myNum * yourNum;) function myOtherFn () (var zahl1 = randRange (1,10); var zahl2 = randRange (1,10); return myFn (zahl1, zahl2);) 

Eine Funktion kann auch sich selbst aufrufen. Wir schrieben die folgende Funktion, zum Beispiel, um die Fakultät einer Zahl zu berechnen (a factorial wird in einem Moment definiert werden):

 Funktion Fakultät (myNum) (if (myNum EQ 1) (return 1;) else (return myNum * Fakultät (myNum - 1);  # Fakultät (6) # 

Die Fakultät von 6, zum Beispiel ist 6 x 5 x 4 x 3 x 2 x 1, oder 720. Um die Fakultät zu berechnen, geben wir die Nummer an die Funktion übergeben, die von der nächst kleinere factorial (weil die Fakultät 6 kann auch dargestellt werden, wie 6 x 5 factorial multipliziert). Sie müssen bei der Schaffung von rekursiven Funktionen sorgfältig, um sicherzustellen, dass Sie eine Stop-Bedingung haben. In unserem Fall halten wir die Rekursion, wenn myNum 1 ist. Wenn Sie nicht eine Stop-Bedingung bauen Sie in Ihre Logik, setzen Sie die Anfrage in eine Endlosschleife. Wir zeigen Ihnen, dass die Strukturen durch Verweis zugegriffen werden, während die anderen Variablen als Wert verwiesen wird. Das gleiche gilt für die Übergabe von Variablen zu einer Funktion. Wenn Sie eine Zahl an eine Funktion übergeben, hat die Aufgabe, eine lokale Kopie dieser Zahl, und alle Änderungen, die Funktionen, um die Anzahl nicht außerhalb der Funktion Anruf wiederholt macht. Bauwerke sind, um eine Funktion als Referenz übergeben, aber so alle Änderungen dass die Funktion macht die Struktur Parameter außerhalb der Funktion aufrufen zu sehen.

Ein Artikel eingereicht von Nina Lachey


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "UDF-Struktur" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 243 users browsing the articles directory