💻 개발/TIL

[TIL] 22.08.25

고도고도 2022. 8. 25. 10:35

공부한 것

부스트코스 - iOS 프로그래밍을 위한 스위프트 기초

알게된 것

1. 옵셔널

// someOptionalParm에 nil이 할당될 수 있음
func someFunction(someOptionalParam: Int?) {
       // ....
}

/// someOptionalParm에 nil이 할당될 수 없음
func someFunction(someOptionalParam: Int) {
       // ....
}
  • nil이 할당될 수 있는지 없는지를 표현
  • nil의 가능성을 명시적(코드)으로 표현 가능
  • 옵셔널이 아닌 경우 nil 체크 없이 바로 사용 가능
  • nil로 인한 예외 상황을 최소화

2. 옵셔널 표현 방법

// 암시적 추출 옵셔널
var optionalValue: Int! = 10

switch optionValue {
case .none:
	print("This is none!")
case .some(let value)
	print("This is \(value)")
}

// 기존 변수처럼 사용 가능
optionValue = optionValue + 1
print(optionalValue) // Optional(11)

// nil 할당 가능
optionValue = nil

// 잘못된 접근으로 인한 런타임 에러
optionalValue = optionalValue + 1

// #####################################
var optionalValue: Int? = 10

// nil 할당 가능
optionalValue = nil

// 기존 변수처럼 사용 불가
// 옵셔널은 기존 변수와 다른 타입
optionalValue = optionalValue + 1

3. 옵셔널 추출

  • 옵셔널 바인딩 방식
var myName: String? = nil

// name 변수는 if-else 구문 내부에서만 사용 가능
if let name:String = myName {
	print(name)
} else {
	print("myName is nil")
}

var myName = "kodo"
var yourName: String? = nil

// ,를 사용해서 여러 개의 옵셔널을 한 번에 바인딩 할 수 있음
// 현재 yourName이 nil이므로 출력문이 실행되지 않음
if let name = myName, let friend = yourName {
	print("\(name), \(friend)")
}
  • 강제 추출 방식
var myName: String! = nil

// 런타임 에러
print(myName)

'💻 개발 > TIL' 카테고리의 다른 글

[TIL] 22.09.22  (0) 2022.09.22
[TIL] 22.09.21  (0) 2022.09.21
[TIL] 22.08.25  (0) 2022.08.25
[TIL] 22.08.24  (0) 2022.08.24
[TIL] 22.06.03  (0) 2022.06.03
[TIL] 22.05.27  (0) 2022.05.27