지난번 swift 공식 문서를 보던중 if 구문에 대해서 궁금한점이 생겼다.
if-expression → if condition-list { statement } if-expression-tail
if-statement → if condition-list code-block else-clause?
if 구문과 if 표현식으로 다르게 존재한다는 것...
if 구문에 대해선 다들 알다시피 조건부의 참/거짓에 따라 분기처리해 작업을 진행할 수 있다..
그렇다면 if 표현식은 뭘까?
우선 Expression은 어떠한 값으로 평가될 수 있는 코드 블록, Statement는 코드의 실행을 제어하거나 관리하는 코드 블록이다.
swift에서는 그 의미가 다른가?
그럴리 없다..
한번 조건부 표현식에 대한 부분을 찾아보자
if <#condition 1#> {
<#expression used if condition 1 is true#>
} else if <#condition 2#> {
<#expression used if condition 2 is true#>
} else {
<#expression used if both conditions are false#>
}
switch <#expression#> {
case <#pattern 1#>:
<#expression 1#>
case <#pattern 2#> where <#condition#>:
<#expression 2#>
default:
<#expression 3#>
}
if 구문과 차이점은 실행하는 코드 블럭이 {statement}대신 {expression}으로 작성되어 있는것을 볼 수 있다.
if 구문과 문법과 분기처리를 할 수 있다는 점은 같지만
위와 같은 조건에서만 가능하다고 한다.
즉, 분기처리를 통해 실행되는 코드 블록이 표현식이여야 한다는 것!
어떠한 작업을 하는 구문은 올수 없다는 점이 차이점이다.
구문은 표현식을 포함하기 때문에 if 구문만으로 충분하지 않나?
if 표현식에 대한 부분을 처음 봐서 이런게 있었나 싶었는데 바로 지난 달에 추가된 내용였다..(휴 다행😁)
아마도 swift proposal 'SE-0380'이 반영되면서 새롭게 추가된 내용인듯 하다
let bullet =
if isRoot && (count == 0 || !willExpand) { "" }
else if count == 0 { "- " }
else if maxDepth <= 0 { "▹ " }
else { "▿ " }
swift 5.9버전 부터 위와 같이 if 표현식을 통해 컴파일시 바로 값을 할당 할 수 있다!
기존에는
let bullet = {
if isRoot && (count == 0 || !willExpand) { return "" }
else if count == 0 { return "- " }
else if maxDepth <= 0 { return "▹ " }
else { return "▿ " }
}()
길었던 if 문법 공식문서 공부 끝..