Azzera filtri
Azzera filtri

problem with code

1 visualizzazione (ultimi 30 giorni)
Tor Fredrik Hove
Tor Fredrik Hove il 22 Ott 2011
I am trying a script that does not work. First I define a structure in matlab:
>> package=struct('item_no',123,'cost',19.99,'price',39.95,'code','g')
package =
item_no: 123
cost: 19.9900
price: 39.9500
code: 'g'
then I have made a script who will try to find out the value of a field in the structure:
inputfield=input('Which field would you like to see: ','s')
if isfield(package, inputfield)
fprintf('The value of the %s field is: %c\n',inputfield,...
eval(['package.'inputfield]))
else
fprintf('Error: %s is not valid field\n', inputfield)
end
but i get error message:
>> structurevalue ??? Error: File: structurevalue.m Line: 6 Column: 22 Unexpected MATLAB expression.

Risposta accettata

Mitch Martelli
Mitch Martelli il 22 Ott 2011
the problem is in the eval,try to put a blank after 'package.' :
eval(['package.' inputfield])
  5 Commenti
Tor Fredrik Hove
Tor Fredrik Hove il 22 Ott 2011
Hi Image Analyst! I am a bit new with matlab so convenient choices is not my strong side. Eval is also a part of the curriculum so I have to know something about it either way
Jan
Jan il 22 Ott 2011
I do not understand what "is part of the curriculum" means. Using EVAL is a bad programming practize, because it is prone to errors and results in slow code.
"package.(inputfield)" is much safer and faster than "eval(['package.' inputfield])".

Accedi per commentare.

Più risposte (1)

Image Analyst
Image Analyst il 22 Ott 2011
This is what the line should look like:
fprintf('The value of the %s field is: %c\n',inputfield, package.(inputfield));
Look up "dynamic field names" in the help for more info.
  1 Commento
Jan
Jan il 22 Ott 2011
+1: Best answer. Perhaps ignoring your answers is a running joke. However, I'm missing the punchline.

Accedi per commentare.

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by