Оператор switch с использованием переменных в условии case - PullRequest
2 голосов
/ 22 ноября 2011

Можно ли создать Switch операторы, которые используют переменные в условии case, на языке сценариев Maya Mel?

Что-то вроде строки (глупый пример для объяснения):

$val1 = "foo";
$val2 = "bar";
// imagine $input as an argument of some proc
switch ($input)
{
case $val1:
    print "Input is 'foo'";
    break;

case $val2:
    print "Input is 'bar'";
    break;
}

Ps Я попробовал это, и это не сработало, но вы могли бы знать о другом варианте.

Большое спасибо

1 Ответ

2 голосов
/ 19 января 2012

Вы не можете напрямую использовать переменные в качестве значений регистра, но вы можете создать строку, содержащую код, который вы хотите выполнить, с заменой переменных на их значения и передать эту строку в функцию eval:

$val1 = "foo";
$val2 = "bar";
// imagine $input as an argument of some proc
string $cmd;
$cmd =  "switch (\"" + $input + "\")";
$cmd += "{";
$cmd += "case \"" + $val1 + "\":";
$cmd += "    print \"Input is 'foo'\";";
$cmd += "    break;";
$cmd += "case \"" + $val2 + "\":";
$cmd += "    print \"Input is 'bar'\";";
$cmd += "    break;";
$cmd += "}";
eval $cmd;
...