J'ai une fonction ColdFusion "foo" qui prend trois args, et le second deux sont en option:Comment spécifier seulement quelques arguments optionnels lors de l'appel de la fonction dans ColdFusion?
<cffunction name="foo" access="public" returntype="any">
<cfargument name="arg1" type="any" required="true" />
<cfargument name="arg2" type="any" required="false" default="arg2" />
<cfargument name="arg3" type="any" required="false" default="arg3" />
...
<cfreturn whatever />
</cffunction>
Je veux appeler foo, en passant arg1 et arg3, mais laissant de côté arg2. Je sais que c'est possible si j'appelle la fonction en utilisant cfinvoke
, mais cette syntaxe est vraiment verbeuse et compliquée. J'ai essayé ces deux approches, aucun ne fonctionne:
<cfset somevar=foo(1, arg3=3) /> <!--- gives syntax error --->
<cfset somevar=foo(1, arg3:3) /> <!--- gives syntax error --->
C'est de cette façon que je préfère généralement le faire. Il est plus que probable que je détermine les arguments à inclure lors de l'exécution. C'est sympa et facile d'enrouler dans un bloc . –
ale
Comme Al l'indique, vous devez mettre à jour vos exemples pour montrer qu'un avantage majeur de ArgumentCollection est qu'il vous permet de construire/manipuler les structures de manière flexible, avant de les envoyer à la fonction - vos exemples actuels ne sont que longs façon d'utiliser tous les arguments nommés. :) –
Il convient également de noter que vous pouvez mélanger et mettre en correspondance les arguments nommés et ArgumentCollection dans un seul appel de fonction. –