Как я могу вызвать имя переменной как часть имени функции в ColdFusion?

Я пишу функцию, которая просматривает некоторую информацию на странице регистрации. Внутри цикла я пытаюсь вызвать функции на основе массива. У меня проблемы с правильным вызовом функций, потому что я пытаюсь включить переменную как часть имени функции.

Вот мой код:

<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 ...) на правильное имя переменной, чтобы функция продолжала работать? Надеюсь, я сделал это понятным!

7
задан Unexpected Pair of Colons 26 August 2011 в 15:10
поделиться