논리연산자에서 &&(Logical AND Operators)을 살펴보면
첫번째 연산자가 False이면 뒤 연산은 볼 필요 없이 False
||(Logical OR Operators)의 경우도
첫번째 연산자가 True면 뒤 연산을 안봐도 True임
이렇게 두번째 연산자를 평가하지 않는 식을 단락평가라고 함
스위프트는 논리식을 평가할 때 결과를 얻는데 최소한의 코드만 실행하며
이미 결과를 얻었다면 결과를 실행하지 않음
aPlus와 bPlus함수에 각각 a,b에 +1 하도록 함
if 문에서 문제가 일어남
aPlus 함수가 먼저 실행이 되고 연산자를 확인하였을때
두번째 연산자를 평가하지 않고 true를 반환하기 때문에
a값은 증가하지만 b 값이 증가하지 않는 것을 확인 할 수 있음
aPlus 함수가 거짓이므로 bPlus함수가 거짓이면 거짓이므로 if문을 실행하지 않음
참이면 if문을 실행함
때문에 bPlus까지 함수도 실행하므로 b의 값도 증가한 것을 확인할 수 있음
때문에 Side Effect를 고려하고 코드를 짜야 우리가 원하는 의도대로 결과를 도출 할 수 있음
*side effect는 표현식을 평가했을때 값이 변경되거나 상태가 변경되는 것을 뜻함
함수를 한번 호출해 주는 등
'Swift랑 친해지기 > Swift문법정리' 카테고리의 다른 글
(Swift) 반복문 (0) | 2022.07.29 |
---|---|
[Swift] 연산자 (Operator) (0) | 2022.07.28 |
[Swift] Type Inference, Type Annotation, Type Conversion, Type Alias (0) | 2022.07.25 |
[Swift] 숫자 리터럴 (Number Literals) (0) | 2022.07.25 |
[Swift] 메모리 (Memory) (0) | 2022.07.21 |