Executing eval in function handle ?
이전 댓글 표시
I have the following code which does not work and I don't understand why:
foo='name'
name='C23';
handle=@(var) eval(var)
handle(foo)
I get the following error:
Error using eval
Undefined function or variable 'name'.
Error in @(var)eval(var)
Here,
handle(foo)
should return
'C23'
Can someone tell me what I did wrong and how to make this work?
Thanks in advance
댓글 수: 3
Rik
2018년 3월 18일
I can't see any direct reason why this doesn't work, however, why do you want to do this? There is almost always a very good replacement for eval. Usually eval solves problems caused by bad data management. Instead of learning how a mop works, it's usually beter to close the faucet.
In other words: what is your goal? Maybe we can help you solve that instead of this question.
Stephen23
2018년 3월 19일
"I could not think of any other way to do this"
Using eval is rarely the solution that beginners think it is: it will just make your code slow, complex, and (as you are finding out now) much buggier and harder to debug. Read this to know more:
채택된 답변
추가 답변 (1개)
Greg
2018년 3월 19일
1 개 추천
Most importantly! respond to Rik's comment above. The use of eval is very nearly always a horrible idea.
However, to your question: it does not work because the scope of name is where the anonymous function is defined. When executing the anonymous function, name is out of scope in that workspace.
댓글 수: 1
Greg
2018년 3월 19일
I hesitate to mention it could work if you used evalin('caller',...); but again, bad idea!
카테고리
도움말 센터 및 File Exchange에서 Variables에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!