Swift
4. swift 문법
리버윤
2024. 9. 25. 15:53
728x90
▶ 옵셔널(Optional) 타입
- 값을 반환할 때 오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환함
- nil : 아무런 값도 반환할 수 없다는 의미
- nil 값을 저정하려면 옵셔널 타입으로 선언해야 함
- 옵셔널 타입 변수를 선언하기 위해서는 타입 선언부 뒤에 ?(물음표)를 씀
● 옵셔널 언래핑(forced unwrapping)
- 옵셔널 변수에 값이 있으면 옵셔널로 "래핑되었다(wrapped)"라고 함
- 옵셔널에 래핑도니 값은 강제 언래핑으로 풀어줌
- 옵셔널형 선언 : 자료형 뒤 ?
- 옵셔널 언래핑 : 변수명 뒤 !
var x : Int = 10
print(x)
// 10 출력
var y : Int? = 20 //이 물음표가 옵셔널타입 변수 선언하는 거.
print(y)
// Optional(20) 출력
var y : Int? = 20 // 자료형 뒤에 물음표. 이 물음표가 옵셔널 타입
print(y!) // 변수 뒤 느낌표. 이 느낌표로 풀어주는 거임
// 10 출력
var y : Int? // y의 초기값을 지웠더니
print(y)
// nil 출력. 값이 없다는 뜻
var y : Int? // y의 초기값을 지우고
print(y!) //값을 보여달라 함
//error 발생
var x : Int = 10
//print(x)
var y : Int? = 20
y = y!+ 1 //옵셔널을 풀어서 1 더함
print(y)
//옵셔널 변수는 그냥 사용하면 안되고 !느낌표로 풀어서 사용해야함
//풀어도 저장하면 또 옵셔널로 돌아간다.
//그래서 결과는 Optional(21) 출력
- 수정 결과
var x : Int = 10
print(x)
var y : Int? = 20
y = y! + 1
x = y! //느낌표를 붙여서 강제로 푸는 강제 언래핑
print(y)
- 강제 언래핑
var x : Int?
x = 10
if x != nil { //if x!=nil 이렇게 쓰면 오류발생함.띄어쓰기 주의
print(x!)
}
else {
print("nil")
}
● 옵셔널 타입 강제 언래핑 : optional binding
- 강제 언래핑 하는 또 다른 방법, 옵셔널 바인딩(optional binding) 이용하여 옵셔널에 할당된 값을 임시로 변수 또는 상수에 할당
if let constantname = oprionalName {
//옵셔널 변수가 값이 있다면 언래핑 해서 일반상수 constnatname에 대입하고 if문 실행
//값이 없다면 if 문의 조건이 거짓이 되어 if문을 실행하지 않음
}
if var variablename = optionalName {
//옵셔널 변수가 값이 있다면 언래핑해서 일반 변수 variblename에 대입하고 if문 실행
//값이 없다면 if문의 조건이 거짓이 되어 if문을 실행하지 않음
}
var x : Int?
x = 10
if let xx=x {
print(x,xx). //Optional(10) 10 출력
}
var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let firstPet = pet1, let secondPet = pet2 {
print(firstPet, secondPet)
} else {
print("nil")
}
//cat dog 출력
- 여러값 동시에 언래핑
var x : Int?
var y : Int?
x = 10
y = 10
if let xx = x {
print(xx)
}
else {
print("nil")
}
if let yy = y{
print(yy)
}
else {
print("nil")
}
var x : Int?
var y : Int?
x = 10
y = 10
if let xx = x, let yy = y {
print(xx, yy)
}
else {
print ("nil")
}
- swift에서 optional 변수를 푸는 방법 중 가장 많이 사용하는 방법
옵셔널 바인딩(Optional Binding)**입니다. 옵셔널 바인딩을 사용하면 optional 변수가 nil인지 확인하고, nil이 아닐 경우 안전하게 값을 사용할 수 있습니다.
옵셔널 바인딩의 예
swift
var optionalValue: String? = "Hello, Swift!"
if let unwrappedValue = optionalValue {
print("값이 존재합니다: \(unwrappedValue)")
} else {
print("값이 nil입니다.")
}
설명
- 선언: optionalValue라는 optional 변수를 선언합니다. 초기값으로 "Hello, Swift!"를 할당합니다.
- 옵셔널 바인딩: if let 구문을 사용하여 optionalValue의 값을 unwrappedValue라는 상수에 바인딩합니다. 이 과정에서 optionalValue가 nil이 아닌 경우에만 unwrappedValue가 생성됩니다.
- 사용: 만약 optionalValue가 nil이 아닐 경우, 안전하게 unwrappedValue를 사용할 수 있습니다.
이 방법은 Swift에서 안전하게 optional 값을 처리하는 가장 일반적이고 권장되는 방법입니다.
▶ 연산자 (Operator)
▶ 클래스 vs 객체 vs 인스턴스
▷ 형변환 (as! as?로 downcasting : 부모 인스턴스를 자식클래스로 변환
- 부모 인스턴스 as! 자식클래스 // downcasting 일반 타입을 반환. 다운캐스팅이 반드시 성공할 것이라는 확신이 있는 경우
- 부모 인스턴스 as? 자식클래스 // downcasting 옵셔널 타입으로 반환. 확신이 없을 경우
- switch~case문에서의 범위 지정 매칭
728x90