옵셔널 바인딩을 다시한번 공부하다가 옵셔널 바인딩부분에서 궁금점이 생겨
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타입으로 브릿지된 값을 가짐)
: 옵셔널 바인딩을 찾아본 이전글에서 Boolean condition이 올수 있다고 말했으니 Boolean expression만을 말하는 것
이때 연산자 &&
을 사용한 expression이 나오는 것
: 디바이스 종류나 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
: if case let .recipe = myRecipe {statement}
으로 작성하는 형식(enum 연관값 바인딩 생각하면 될듯?)
: 이전 글에서 찾아 본 옵셔널 바인딩 문법
즉 이러한 condition들을 ,
로 나열해서 전부 true일 경우에만 {statement}를 실행한다는 것!👍
if let firstNumber = Int("4") && let secondNumber = Int("42") && (firstNumber < secondNumber && secondNumber < 100)
에서 알 수 있듯 condition-list는 앞에서 부터 순차적으로 실행 된 다는 점!!
옵셔널 바인딩을 통해 선언한 상수(혹은 변수)를 뒤에 오는 condition들에서 접근이 가능하다..!
,
는 condition들을 이어 붙일 때 사용
&&
는 하나의 condition중 expression을 만들때 사용
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문이??
궁금하다면 다음 포스트에서..