본문 바로가기

iOS

단락평가(short-Circuit Evaluation)

swift 는 &&(and), ||(or) 연산 시 단락평가라는 것을 사용한다고 한다.

 

이게 뭔가 찾아봤더니,

앞에서 이미 연산이 결정됐다면 뒤에 있는 연산은 하지 않고 넘어간다는 것이다.


아래 예시를 확인해보자.

 

AND 와 OR 는 대부분 알 것이라고 생각하고 넘기고,

temp 메서드와 3번째 조건문을 확인해보자

 

temp 메서드를 실행하면 분명히 number 를 +1 하고, 출력하기로 되어있는데

조건문에서 || 를 사용하기에 하나라도 true 가 되는 순간

"앞에서 이미 연산이 결정됐기에 뒤에 있는 메서드는 모르는 일이 되었다"

이렇듯 연산이 이미 결정이 됐다면 이후의 연산을 안하기에 효율적인 논리 연산을 진행하지만,

혹여나 끝까지 연산이 진행되어야 한다면 어딘가에 프로퍼티로 값을 담아놓고, 그 값으로 연산을 진행하는 것이 좋겠다.