Short-circuit logic and dynamic structure referencing: Why does this not work?

1 Ansicht (letzte 30 Tage)
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.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 25 Okt. 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'}
  1 Kommentar
Chris
Chris am 26 Okt. 2015
Perfect, that's exactly the sort of detail I would have overlooked for way too long. Thank you.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Simulink finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by