2016-03-21 4 views
0

Это может быть очень странный вопрос (и, возможно, мне может быть предложено не делать такую ​​странную вещь), но если у меня есть строка, как в v_str ='var_name', и я хочу преобразовать содержимое этого кода в фактический код, это возможно в MATLAB? Как и в:Можно ли преобразовать строку в переменное кодовое имя в MATLAB?

v_str = 'var_name' 
x = make_string_to_code(v_str) 

переводит код функционирования:

x = var_name 

, который просто преобразует строку фактического кода.

Единственный способ, которым я думал об этом, - записать файл с этим кодом, а затем на следующей строке, выполняющей это, но я не хотел писать файлы каждый раз, когда хочу это сделать.

Кроме того, почему это так не рекомендуется? Почему это так bad?

+2

Да, но [вы не хотите] (http://blogs.mathworks.com/loren/2005/12/28/ уклонение-Eval /). – excaza

+0

@excaza спасибо. : D как-то я пропустил это. –

ответ

1

Вы можете использовать eval, но это не значит, что вы должны, как упомянуто другими.

v_str = '2 + 2' 
eval(['x = ' v_str]) % x = 4; 
x = eval(v_str); % x = 4; 

Документация eval можно найти здесь: eval

+0

так что сделать переменные из строк не рекомендуется? Почему так? (извините, если это очевидный вопрос) –

+0

@CharlieParker, потому что это плохая практика программирования вообще не имеет понятия, откуда происходят ваши переменные; это очень сложно отладить. Вы также слепо исполняете * любую * строку, которая совсем не защищена. Он также очень неэффективен, компилятор MITLAB JIT не может оптимизировать утверждения 'eval'. – excaza

+0

@CharlieParker Посмотрите первый комментарий к своему оригинальному сообщению. – Suever

Смежные вопросы