How can I use the content of a variable to call another variable?

조회 수: 8 (최근 30일)
David
David 2014년 8월 18일
편집: Stephen23 2023년 9월 12일
I'm confronted with the following problem:
eur2usd =[ 1.3 1.2 1.1];
eur2cad =[0.8 0.9 0.7];
currency = 'eur2usd'
I would like to use the variable currency to call the content of eur2usd ([ 1.3 1.2 1.1]). So that if currency = 'eur2cad', I can call the content of eur2cad by using the variable currency.
  댓글 수: 2
Adam
Adam 2014년 8월 18일
I would favour coming up with a solution which didn't require you to do that. e.g. having currency be a function handle rather than a raw variable-name string, or using containers.Map or some kind of array to index into.
But if you are set on having a variable name in a string I'm sure someone can soon furnish you with the appropriate eval-based syntax.
Stephen23
Stephen23 2015년 1월 4일
편집: Stephen23 2023년 9월 12일
Basically you should not do this.
Using dynamically defined variable names or encoding data within the variable name is a pretty bad approach:
You should probably be using for your data: structures. This shows how it could work:
>> A = struct('eur2usd',[ 1.3 1.2 1.1],'eur2cad',[0.8 0.9 0.7]);
>> A.('eur2cad')
ans = [0.8,0.9,0.7]
Note that using a structure is extendable to any number of currencies without cluttering-up your workspace with a thousand variables. There is also a large selection of tools that you can use to manipulate structures, their fields and contents:
Summary: do not use eval to encode (meta-)data into the variable names!

댓글을 달려면 로그인하십시오.

채택된 답변

Andrew Reibold
Andrew Reibold 2014년 8월 18일
편집: Andrew Reibold 2014년 8월 18일
eval(currency)
or
eval('eur2usd')
etc
  댓글 수: 1
Image Analyst
Image Analyst 2015년 1월 4일
David's "Answer" moved here since it'a not an Answer to the origianl question but a reply to Andrew
Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Whos에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by