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 

単に実際のコードに文字列を変換しています。

私がこれを行う唯一の方法は、そのコードを含むファイルを作成し、次にその行を実行することですが、これを実行するたびにファイルを書くことを避けたかったのです。

また、なぜこれは推奨されないのですか?なぜそれですか?が悪い

+2

はい、しかし[あなたがしたくない](http://blogs.mathworks.com/loren/2005/12/28/ evading-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なぜなら、あなたの変数がどこから来ているのかわからないのはプログラミングの習慣が悪いからです。デバッグが非常に困難になります。あなたはまったく安全ではない*あらゆる文字列も盲目的に実行しています。また非常に非効率的で、MATLABのJITコンパイラは 'eval'ステートメントを最適化できません。 – excaza

+0

@CharlieParker元の投稿のexcazaの最初のコメントを参照してください。 – Suever

関連する問題