Vâng, CFML đã hỗ trợ đối số động cho miễn là nó đã hỗ trợ chức năng người dùng định nghĩa.
Tất cả các đối số, cho dù được xác định rõ ràng hay đã được chuyển vào mà không được xác định, tồn tại trong phạm vi Đối số.
Phạm vi đối số có thể được coi là cả mảng và cấu trúc (khóa/giá trị).
Dưới đây là tương đương gần nhất với ví dụ của bạn, sử dụng cú pháp kịch bản:
function func()
{
for (a in arguments)
WriteOutput(arguments[a] & "is a quality argument");
}
Lưu ý rằng a
trong ví dụ này là tên chính, không phải là giá trị, do vậy tại sao arguments[a]
được sử dụng.
Để được coi là mã, kịch bản ở trên một trong hai phải nằm trong <cfscript>
.. </cfscript>
thẻ, hoặc cách khác bên trong một component {
.. }
khối bên trong một tập tin .cfc
.
Dưới đây là một vài phiên bản thẻ, tương đương đầu tiên đến cho/trong vòng lặp:
<cffunction name="func">
<cfloop item="a" collection=#Arguments#>
<cfoutput>#Arguments[a]# is a quality argument</cfoutput>
</cfloop>
</cffunction>
Và một điều này cho phép bạn truy cập vào giá trị trực tiếp (ví dụ:a
là giá trị ở đây):
<cffunction name="func">
<cfloop index="a" array=#Arguments#>
<cfoutput>#a# is a quality argument</cfoutput>
</cfloop>
</cffunction>
Trong Railo * CFML, ví dụ cuối cùng này có thể được diễn tả trong kịch bản như:
function func()
{
loop index="a" array=Arguments
{
WriteOutput(a & 'is a quality argument');
}
}
* Railo là một trong hai lựa chọn thay thế mã nguồn mở để Adobe ColdFusion, cái còn lại là Open BlueDragon.
Tôi gặp sự cố lấy ví dụ cuối cùng của bạn để làm việc ... lỗi tôi đang nhận là 'từ khóa chức năng bị thiếu trong khai báo FUNCTION.' ... Bất kỳ đề xuất nào? – John
Ví dụ đầu tiên đó sẽ cần phải nằm trong vòng khối –
' loop index = "a" Tôi đã không bao giờ nhìn thấy điều này, là điều này cho Railo hoặc một cái gì đó? – Henry