【发布时间】:2011-08-26 15:10:35
【问题描述】:
我正在编写一个循环访问注册页面上的一些信息的函数。在循环中,我试图调用基于数组的函数。我遇到的问题实际上是正确调用函数,因为我试图将变量合并为函数名称的一部分。
这是我的代码:
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
}
</cfscript>
所以,我有三个函数:validate_email、validate_uname、validate_pass。如果我抛出一个 writeoutput(),并尝试输出函数的结果,它们就不起作用。
代码如下:
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
writeoutput('#func#');
}
</cfscript>
现在,我知道当您使用 writeoutput() 并调用函数时,两端都需要井号。所以,假设我这样写:
writeoutput('#validate_#func[2]#(#fields[i]#)#');
它不起作用,因为第二个哈希符号取消了函数调用。这就是函数的最终外观(电子邮件示例):
writeoutput('#validate_email('email@site.com')#');
如何将“电子邮件”(#validate_email...)替换为正确的变量名,并且仍然可以使用该功能?我希望我已经让这变得可以理解了!
【问题讨论】:
标签: function variables coldfusion