2009-05-13 2 views
4

Cette question peut être naïve car je suis novice en programmation ColdFusion.ColdFusion: Invoquer un cffunction à partir du même composant

J'ai une tâche pour laquelle j'ai écrit une fonction, f1, à l'intérieur d'un composant. Je veux appeler f1 à partir d'une autre fonction, f2 définie dans le même composant.

f2 est appelée dans un fichier cfm.

Ma question - Est-ce la bonne façon de le faire? Puis-je appeler f1 à partir de f2?

Je peux aussi bien fusionner f1 en f2, mais je voudrais garder f1 comme une fonction séparée.

Répondre

12

Oui, vous pouvez appeler f1 à partir de f2 dans ColdFusion si les deux fonctions font partie du même composant. (Ils ne doivent pas être dans le même composant, mais si elles sont, la réponse est toujours oui.)

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

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

Il y a beaucoup de bonnes raisons d'appeler une fonction d'une autre. C'est ce qu'on appelle function composition.

+0

Ouais, je l'ai maintenant. Son quelque chose comme Arnkrishn

+3

Vous ne Thanx pas vraiment besoin d'utiliser cfinvoke pour appeler la deuxième fonction, sauf si vous avez besoin d'une nouvelle instance de l'objet. Vous pouvez simplement l'appeler comme n'importe quelle autre fonction (comme Patrick le montre dans son exemple). –

+0

sauvé ma journée ... j'étais this.f1() - ing pour la dernière demi-heure – frequent

0

Dans Coldfusion 10 et Railo 4, vous pouvez créer des fonctions composé en utilisant le Underscore.cfc library:

_ = 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!" 

(Note: je l'ai écrit la bibliothèque Underscore.cfc)

Questions connexes