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

조회 수: 2 (최근 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'}
  댓글 수: 1
Chris
Chris 2015년 10월 26일
Perfect, that's exactly the sort of detail I would have overlooked for way too long. Thank you.

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

추가 답변 (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