swift if 문의 condition 정리 ( ,와 && 차이점과 함께)

Hashswim·2023년 10월 18일
1

if-statement condition-list 정리

옵셔널 바인딩을 다시한번 공부하다가 옵셔널 바인딩부분에서 궁금점이 생겨
if 구문의 조건에 대해 찾아보게되었다.

한번 스위프트 공식문서의 문법 요약을 찾아보면.. 👀

Grammar of an if statement
if-statement → if condition-list code-block else-clause?
else-clause → else code-block | else if-statement

if 구문 뒤에 condition-list가 오는 부분을 볼 수 있다
그럼 condition-list란??

condition-list → condition | condition , condition-list
condition → expression | availability-condition | case-condition | optional-binding-condition
case-condition → case pattern initializer
optional-binding-condition → let pattern initializer? | var pattern initializer?

1개 이상의 condition들을 말하는 것 같다
(여기서 condition은 Bool타입이나 Bool타입으로 브릿지된 값을 가짐)

condition 4종류

  • expression

    : 옵셔널 바인딩을 찾아본 이전글에서 Boolean condition이 올수 있다고 말했으니 Boolean expression만을 말하는 것
    이때 연산자 &&을 사용한 expression이 나오는 것

  • availability-condition

    : 디바이스 종류나 iOS버전 등으로 분기 처리 가능하다~

    문법 요약

    Grammar of an availability condition
    availability-condition → #available ( availability-arguments )
    availability-condition → #unavailable ( availability-arguments )
    availability-arguments → availability-argument | availability- argument , availability-arguments
    availability-argument → platform-name platform-version
    availability-argument → *

    platform-name → iOS | iOSApplicationExtension
    platform-name → macOS | macOSApplicationExtension
    platform-name → macCatalyst | macCatalystApplicationExtension
    platform-name → watchOS | watchOSApplicationExtension
    platform-name → tvOS | tvOSApplicationExtension
    platform-name → visionOS
    platform-version → decimal-digits
    platform-version → decimal-digits . decimal-digits
    platform-version → decimal-digits . decimal-digits . decimal-digits

  • case-condition

    : if case let .recipe = myRecipe {statement} 으로 작성하는 형식(enum 연관값 바인딩 생각하면 될듯?)

  • optional-binding-condition

    : 이전 글에서 찾아 본 옵셔널 바인딩 문법

즉 이러한 condition들을 ,로 나열해서 전부 true일 경우에만 {statement}를 실행한다는 것!👍

⭐️ 알고 갈 점

if let firstNumber = Int("4") && let secondNumber = Int("42") && (firstNumber < secondNumber && secondNumber < 100)

에서 알 수 있듯 condition-list는 앞에서 부터 순차적으로 실행 된 다는 점!!

옵셔널 바인딩을 통해 선언한 상수(혹은 변수)를 뒤에 오는 condition들에서 접근이 가능하다..!

,는 condition들을 이어 붙일 때 사용
&&는 하나의 condition중 expression을 만들때 사용

🧐 condition-list 사용 구문들은?

if-expression → if condition-list { statement } if-expression-tail
if-statement → if condition-list code-block else-clause?
while-statement → while condition-list code-block
guard-statement → guard condition-list else code-block

repeat-while은 condition-list 아님!
단일 표현식 하나만 가능

repeat-while-statement → repeat code-block while expression

위에 사용 구문을 보면 if-expression과 if-statement가 있는 것을 볼 수 있다.
if 문법이 왜 표현식이지?? 삼중 표현식도 아니고 왜 if문이??
궁금하다면 다음 포스트에서..

0개의 댓글