我有一些功能是内置在CF10,而不是在CF9。
我想使函数可用,如果它没有定义。我认为一个简单的try-catch
会做到这一点,但我仍然得到"用户定义函数的名称不能与内置ColdFusion函数相同。"错误
try {
// override function if it doesn't exist
function listRemoveDuplicates(inList,delim)
{
var listStruct = {};
var i = 1;
for(i=1;i<=listlen(inList, delim);i++)
{
listStruct[listgetat(inList,i)] = listgetat(inList,i);
}
return structkeylist(listStruct);
}
}
catch(e) {
// do nothing
}
是否有if
语句或任何其他方法处理此问题?
一种方法是将函数放在单独的文件中,然后只有在版本号正确的情况下才包含该文件。比如:
<cfif ListFirst(server.coldfusion.productVersion) LT 10>
<cfinclude template="/udfs/CF10functions.cfm">
</cfif>
如果这对你不起作用,没有理由你不能把所有的函数都包装在一个单独的if
块中。
if (ListFirst(server.coldfusion.productVersion) LT 10) {
function listRemoveDuplicates(inList,delim) {
...
}
function foo(arg) {
...
}
...
}
总是有GetFunctionList()
显示ColdFusion中可用的函数列表。
函数结构。
if (NOT structKeyExists(getFunctionList(),"listRemoveDuplicates")) {
// override function if it doesn't exist
function listRemoveDuplicates(inList,delim)
{
var listStruct = {};
var i = 1;
for(i=1;i<=listlen(inList, delim);i++)
{
listStruct[listgetat(inList,i)] = listgetat(inList,i);
}
return structkeylist(listStruct);
}
}