2009-05-13 4 views
4

Diese Frage könnte naiv sein, da ich neu in ColdFusion-Programmierung bin.ColdFusion: Rufen Sie cffunction von der gleichen Komponente

Ich habe eine Aufgabe, für die ich eine Funktion geschrieben habe, f1, in einer Komponente. Ich möchte f1 von einer anderen Funktion aufrufen, f2 in der gleichen Komponente definiert.

f2 wird in einer cfm-Datei aufgerufen.

Meine Frage - Ist das der richtige Weg? Kann ich f1 von f2 aufrufen?

Ich kann auch f1 in f2 verschmelzen, aber ich möchte f1 als separate Funktion behalten.

Antwort

12

Ja, Sie können f1 von f2 in ColdFusion aufrufen, wenn beide Funktionen Teil derselben Komponente sind. (Sie müssen nicht in der gleichen Komponente sein, aber wenn sie sind, ist die Antwort immer ja.)

<cffunction name="f2"> 
    ... 
    <cfset result_of_f1 = f1()> 
    ... 
</cffunction> 

<cffunction name="f1"> 
    ... 
</cffunction> 

Es gibt viele gute Gründe, eine Funktion von einem anderen zu nennen. Es heißt function composition.

+0

Ja, ich habe es. Sein etwas wie thanx – Arnkrishn

+3

Sie brauchen nicht wirklich cfinvoke verwenden, um die zweite Funktion aufzurufen, wenn Sie eine neue Instanz des Objekts benötigen. Sie können es einfach wie jede andere Funktion nennen (wie Patrick in seinem Beispiel zeigt). –

+0

habe meinen Tag gerettet ... ich war das. F1() - in der letzten halben Stunde – frequent

0

In Coldfusion 10 und Railo 4 können Sie komponierten Funktionen erstellen die Underscore.cfc library mit:

_ = new Underscore();// instantiate the library 

f1 = function (message) { 
    return "hello " & message; 
}; 

f2 = function (toOutput) { 
    writeOutput(toOutput); 
}; 

sayHelloTo = _.compose(f2, f1); 

sayHelloTo("world!");// output: "hello world!" 

(Anmerkung: Ich schrieb die Underscore.cfc Bibliothek) jetzt

Verwandte Themen