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

1 次查看(过去 30 天)
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.

采纳的回答

Walter Roberson
Walter Roberson 2015-10-25
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'}

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Simulation, Tuning, and Visualization 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by