Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

9 - 옵셔널 체이닝(Optional Chaining), Generic, Array 본문

2 - 겨울방학/Swift 복습

9 - 옵셔널 체이닝(Optional Chaining), Generic, Array

김브래 2023. 12. 29. 22:23

옵셔널 체이닝 (Optional Chaining)


옵셔널 체이닝 (Optional Chaining)

옵셔널로 선언된 변수의 맴버에 안전하게 접근하기 위한 방법 (?)

Optional Chaining 예

class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name 
= name
self.age 
= age
}
}
let kim: Person 
= Person(name: "Kim", age: 20
)
print(kim.age)
let han: Person? 
= Person(name: "Han", age: 25
)
print(han.age)
//print(han!.age)
// print(han?.age) //Optional(25), 옵셔널 체이닝
// print((han?.age)!) 
// if let hanAge = han?.age {
// print(hanAge)
// } else {
// print("nil")
// }

 

옵셔널 체이닝을 쓰는 이유

옵셔널 타입으로 정의된 값이 프로퍼티나 메서드를 가지고 있을 때, 다중 if를 쓰지 않고 간결하게 코드를 작성하기 위해

 

옵셔널 타입의 데이터는 연산이 불가능
- 연산을 하기 위해서는 옵셔널을 해제 해야 하는데, 많은 양의 옵셔널 타입의 데이터의 경우 다시 한번 옵셔널 타입으로 변경을 하면서 해제를 시켜줌


Generic <>


기능은 같고 매개변수형만 다른 함수는 제네릭 함수로 구현

func myPrint<T>(a: T, b: T) {
print(b,a)
}
myPrint(a:1,b:2)
myPrint(a:2.5,b:3.5)

 

swift의 Array도 generic 구조체

var x : [Int] = [] //빈 배열
var y = [Int]()
var z : Array<Int> = []
var a : [Int] = [1,2,3,4]
var b : Array<Int> = [1,2,3,4]
var c : Array<Double> = [1.2,2.3,3.5,4.1]


Array


Array

연결리스트(linked list)

https://developer.apple.com/documentation/swift/array

빈 배열(empty array)

var number : [Int] = [] 
var odd = [Int]()
var even : Array<Int> = Array()
print(number) //[]

 

빈 배열(empty array) 주의 사항

let number : [Int] = [] 
//빈 배열을 let으로 만들 수는 있지만 초기값에서 변경 불가이니 배열의 의미 없음
var odd = [Int]()
var even : Array<Int> = Array()
print(number)
number.append(100) //let으로 선언한 불변형 배열이라 추가 불가능
//error: cannot use mutating member on immutable value: 'number' is a 'let' constant
odd.append(1)
even.append(2)

 

가변형(mutable)
- var animal = ["dog", "cat","cow"]


불변형 (immutable)
- 초기화 후 변경 불가
- let animal1 = ["dog", "cat","cow"]

 

var number : [Int] = [] 
//number[0]=1 //crash, 방을 만든 후 사용하라!


number.append(1)
print(number)
number[0]=10
print(number)

 

Array(repeating:count:)

특정값(repeating)으로 원하는 개수(count)만큼 초기화
https://developer.apple.com/documentation/swift/array

 

 

Array는 구조체이므로 값 타입

Array 요소의 최댓값 최솟값 :max(), min()