Swift랑 친해지기/Swift문법정리

[Swift] 단락평가 (Short-circuit Evaluation)

데브킹덕 2022. 7. 27. 19:54

논리연산자에서 &&(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는 표현식을 평가했을때 값이 변경되거나 상태가 변경되는 것을 뜻함

함수를 한번 호출해 주는 등