10
Optional(10)
→ 자료형 뒤에 물음표나 느낌표를 써준다 (대부분 물음표)
Int?
Int!
java8의 Optional 클래스, Kotlin의 Nullable 타입
cf. Nullable type
옵셔널 타입은 변수 또는 상수에 아무런 값이 할당되지 않는 상황을 안전하게 처리하기 위한 방법을 제공
: 오류가 생기더라도 실행을 멈추는 것이 아니라 nil 값을 반환함으로써 안전한 프로그래밍 환경을 만들어주려는 것
옵셔널 타입 변수 선언
: 타입 선언부 뒤에 ?
문자를 쓴다
index라는 이름의 옵셔널 Int 변수를 선언하는 예
var index: Int?
var x : Int? // 옵셔널 정수형 변수 x 선언
var y : Int = 0
x = 10 // 안 넣을 수도 있다
print(x) // Optional(10)
print(x!)
// forced unwrappoing 해서 10이 나옴 -> 강제로 풀어해친다
print(y)
if let constantname = optionalName {
}
if var variablename = optionalName {
}
var x : Int?
x = 10
if let xx = x {
print(xx)
}
else {
print("nil")
}
var x1 : Int?
if let xx = x1 {
print(xx)
}
else {
print("nil")
}
,
(콤마) 사용 var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let firstPet = pet1, let secondPet = pet2{
print(firstPet, secondPet)
} else{
print("nil")
}
var x : Int?
x = 10
if let xx = x {
print(xx)
}
else {
print("nil")
}
var x1 : Int?
if let xx = x1 {
print(xx)
}
else {
print("nil")
}
→ optional binding 이용
var x : Int?
var y : Int?
x = 10
y = 20
if let xx = x, let yy = y {
print(xx, yy)
}
else {
print("nil")
}
?
대신 !
를 사용var x : Int?
// 옵셔널 변수 선언방법 1var y : Int!
// 옵셔널 변수 선언방법 2class MyAge{
var age : Int!
init(age: Int) {
self.age = age{
}
}
func printAge(){
print(age) //Optional(1)
print(age+1) //2, age! +1라고 쓸 필요가 없음
let age1 : Int = age
print(age1) // 1
let age2 = age + 2
print(age2) //3
}
}
}
var han = MyAge(age:1)
han.printAge()
var myInt = nil
// error (옵셔널이 아니면 nil값을 할당할 수 없다)let myConstant = nil
// 유효하지 않은 코드 → 일반형이므로 nil값 저장 불가var mystring : String = nil
// 유효하지 않은 코드 → 일반형이므로 nil값 저장 불가 var myInt : Int? = nil
// OK (옵셔널에는 괜찮다) var myInt : Int?
// 초기화하지 않으면 자동으로 nil로 초기화됨 → 위와 같은 코드학습자료 : Smile Han 유튜브 채널 & 야곰의 스위프트 프로그래밍