네이버 블로그에서 2024.11.10 일 작성된 글입니다.
대표적으로 반복문에서 벗어날때 사용합니다.
예시코드로 이렇게 구현 해봤습니다.
빠져나올수 while 조건에 true가 있으니 빠져나올수 없는 반복문입니다.
다만, 100이 되면 break를 만나 반복문이 종료됩니다.
또 switch 문에서 실행하려는 코드가 없을때 break를 사용한다고 합니다.
break문이 없으면 이렇게 에러 메세지가 출력됩니다.
'default' label in a 'switch' must have at least one executable statement
스위치 문은 기본값을 실행할 문장이 적어도 하나는 있어야 합니다.
스위치문도 조건에 따라 동작하는 문법이라 나열된 case들에 일치하지 않는 경우의 기본값이 필요합니다.
그게 default를 선언하는 이유입니다.
기본값으로 실행할 문장을 원치 않으면 break 키워드를 적어 둡니다.
이건 swift 세계에서의 약속입니다.
스위프트는 Optional 타입이라는게 존재합니다. (다른 언어에도 있네요)
공식문서
https://developer.apple.com/documentation/swift/optional
A type that represents either a wrapped value or the absence of a value.
developer.apple.com
공식문서상 정의는 한번 감싸진 값 입니다.
이렇게 초기값이 설정되어 있지 않으면 에러가 납니다.
하지만 옵셔널 타입을 뜻하는 Int? 로 타입을 설정하면 에러가 뜨지않습니다.
이경우 출력 결과는 nil입니다.
즉 옵셔널 타입을 설정하면 nil로 초기화 되어있음을 알수있습니다.
만약 옵셔널 타입에 1을 할당하면 어떻게 출력될까요?
결과는 Optional(1) 이 나오게 됩니다.
옵셔널은 한번 감싸진 값이라고 했으니 출력 결과가 위와 같이 나오게 됩니다.
이런결과가 나오는 이유는 Optional 타입은 Enum형식으로 정의가 되어있습니다.
https://developer.apple.com/documentation/swift/optional
A type that represents either a wrapped value or the absence of a value.
이렇게 .some 과 .none으로 구성되어 있습니다.
.some은 값은 존재하지만 한번 감싸진 임시값 입니다.
.none은 실제로 값이 존재하지 않지만 한번 감싸진 "값이 없음" 입니다.
.none의 결과로 nil이 출력되는 것입니다.
Optional 타입은 불확실한 타입으로 해석할수 있겠습니다.
고로 nil의 구체화된 형태가 Optional.none 이라고 이해하면 되겠습니다.
우리는 이 nil 값을 통해서 코드를 유연하게 짤수 있습니다.
위에 변수선언시에도 따로 초기값을 설정해주지 않은 느낌으로
함수를 생성후 실행할때도
이렇게 단순히 nil값만을 전달해주면 컴파일 에러 없이 테스트를 진행할수 있습니다.
출력 결과 :
Optional("안녕")
nil
이 불확실한 값을 확실한 값으로 변경해주기 위해서
이라는 문법이 존재합니다.
1. 강제 언래핑 - 값이 있다는것을 확신한다면 강제로 옵셔널값을 벗겨냅니다.
2. 조건문을 통한 추출 - nil 이 아니라면 강제언래핑
3. 옵셔널 바인딩 (if let 과 guard let ) - let은 값을 고정해 야 하기에 확실한 값이 존재해야합니다. let에 담기지 않는다는것은 값이 없다는것을 뜻합니다.
4.닐 코얼레싱 - 이건 값을 벗기는게 아닌 값이 존재하지 않는 경우(nil) 디폴트값을 제시합니다.