Mam funkcji ColdFusion "foo", który trwa trzy argumenty, a drugi dwa są opcjonalne:Jak określić tylko niektóre opcjonalne argumenty podczas wywoływania funkcji w 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>
chcę zadzwonić foo, przekazując arg1 i arg3, ale pomijając arg2. Wiem, że jest to możliwe, jeśli zadzwonię do tej funkcji, używając cfinvoke
, ale ta składnia jest naprawdę gadatliwa i skomplikowana. Próbowałem tych dwóch podejść, ani działa:
<cfset somevar=foo(1, arg3=3) /> <!--- gives syntax error --->
<cfset somevar=foo(1, arg3:3) /> <!--- gives syntax error --->
Tak właśnie na ogół wolę to zrobić. Jestem bardziej niż prawdopodobne określenie, które argumenty należy uwzględnić w czasie wykonywania. Łatwo jest opakować wewnątrz bloku . –
ale
Zgodnie z tym, co sugeruje Al, powinieneś zaktualizować swoje przykłady, aby pokazać, że główną zaletą ArgumentCollection jest to, że pozwala budować/manipulować strukturami w elastyczny sposób, przed wysłaniem go do funkcji - twoje obecne przykłady są po prostu zszokowane sposób użycia wszystkich nazwanych argumentów. :) –
Warto również zauważyć, że można mieszać i łączyć nazwane argumenty i ArgumentCollection w jednym wywołaniu funkcji. –