[TIL]0727_swift 옵셔널(1)

JJ_u·2021년 7월 27일
0

TIL

목록 보기
2/7
post-thumbnail

옵셔널(Optionals)

옵셔널은 어떠한 값이 있을 수도 없을 수도 있다는 것을 나타낸다.

옵셔널 변수, 상수 등은 데이터 타입 뒤에 물음표(?) 붙여 표현

var myName: String? = "Jake"
print(myName)

>>> Jake

💡즉 변수,상수의 값이 nil일 수도 있다.


Swift에서는 String 타입을 Int타입으로 변환하기 위한 Int 메서드를 가진다. 하지만 모든 문자형이 정수형으로 변환❌ "123" ⇒ 123 but, "Hello World" ⇒ 분명한 값으로 변환❌

let possibleNumber = "123"
let convertedNumber = Int(posssibleNumber)
// convertedNumver is inferred(추론하다) to be of type "Int"?, or "optional Int"

toInt메서드가 안되는 것으로 보아, Int 가 아닌 Optional Int 값을 리턴하고 있다.

  • Optional Int는 Int가 아닌 Int?로 쓴다.
  • ?는 그 값이 optional하다는 것을 의미
  • 어떠한 Int값을 가지거나 아예 전혀 값을 가지지 않는 다는 것을 의미
  • Int값을 가지거나 값이 없을 수 있다.

nil

옵셔널 변수의 값을 없는 상태로 만들어준다.(옵셔널이 아닌 경우 사용❌)

var serverResponseCode: Int? = 404
// serverResponseCode contains an actual Int value of 404
serverResponseCode = nil
// serverResponseCode now contains no value

옵셔널 변수에 값을 할당하지 않을 경우 자동적으로 nil이 할당된다.

var surveyAnswer: String?
// surveyAnswer is automatically set to nil

If문과 강제 언랩핑(If Statements and Forced Unwrapping)

if문을 사용하여 옵셔널과 nil을 비교하여 옵셔널에 값이 있는지 확인할 수 있다.

옵셔널에 값이 없다면 nil로 간주

if convertedNumber != nil {
    print("convertedNumber contains some integer value.")
}
// Prints "convertedNumber contains some integer value."

옵셔널 값의 뒤에 !를 붙여주면 값을 강제로 추출하여 반환해준다. 강제 추출 시 옵셔널에 값이 없다면, 즉 nil이라면 런타임 오류가 발생한다.

if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

🍎느낀점

  • 스위프트 공부하면서 옵셔널을 왜 쓰는지? 굳이 써야 하나 싶었는데 이제 좀 감이 잡히는거 같다.
  • 강의 좀...빨리 들어야겠다..이러다 할일 또 산더미ㅠ

참고: https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

profile
개발자 만들기

0개의 댓글