Short-circuit logic and dynamic structure referencing: Why does this not work?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This behavior seems rather inconsistent, especially since by my understanding of short-circuit logic the A.(x) bit should not be evaluated if isfield(A,x) is false. Can someone help me understand this behavior? Thank you!
>> A = struct('apple',1, 'orange',1);
>> x = 'apple';
>> isfield(A,x) && A.(x)
ans =
1
>> x = 'banana';
>> isfield(A,x) && A.(x)
ans =
0
>> isfield(A,x) & A.(x)
Reference to non-existent field 'banana'.
>> for x = {'apple','banana'}
.. isfield(A,x) && A.(x)
.. end
Argument to dynamic structure reference must evaluate to a valid field name.
0 commentaires
Réponse acceptée
Walter Roberson
le 25 Oct 2015
Nothing to do with short circuit logic.
for x = {'apple','banana'}
does not assign x = 'apple' and then x = 'banana': instead it assigns x = {'apple'} and then x = {'banana'}
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Simulation, Tuning, and Visualization dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!