Tôi có một chức năng ColdFusion "foo" mà mất ba args, và lần thứ hai hai là không bắt buộc:Làm thế nào để chỉ định một số đối số tùy chọn khi gọi hàm trong 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>
Tôi muốn gọi foo, đi qua trong arg1 và arg3, nhưng rời ra arg2. Tôi biết rằng điều này là có thể nếu tôi gọi hàm bằng cách sử dụng cfinvoke
, nhưng cú pháp đó thực sự tiết và phức tạp. Tôi đã thử hai cách tiếp cận này, không hoạt động:
<cfset somevar=foo(1, arg3=3) /> <!--- gives syntax error --->
<cfset somevar=foo(1, arg3:3) /> <!--- gives syntax error --->
Đây là cách tôi thường thích làm điều đó. Tôi có nhiều khả năng xác định các đối số để bao gồm trong thời gian chạy. Thật tuyệt vời và dễ dàng để bọc bên trong khối . –
ale
Như Al ngụ ý, bạn nên cập nhật các ví dụ của bạn để cho thấy rằng lợi ích chính của ArgumentCollection là nó cho phép bạn xây dựng/thao tác các cấu trúc theo kiểu linh hoạt, trước khi gửi nó đến hàm - ví dụ hiện tại của bạn chỉ là một cuộn dài cách sử dụng tất cả các đối số được đặt tên. :) –
Cũng đáng lưu ý là bạn có thể kết hợp các đối số được đặt tên và kết hợp và ArgumentCollection trong một cuộc gọi hàm duy nhất. –