swift 기초 문법 <9>

구찌댕댕이·2022년 7월 10일
0

swift 기초 문법

목록 보기
9/12
post-thumbnail

Collection

  • array, set, dictionary : generic collection

Array : index 와 value 로 되어있는 배열. Generic Structure

var x : [Int] = [] // 빈배열 생성
var y = [Int]() // 빈배열 생성
var z : Array<Int> = [] // 빈배열 생성
// 빈 배열 생성시 let 으로 선언하면 초기값에서 변경할 수 없어 빈배열로만 사용된다.

var a : [Int] = [1, 2, 3, 4] // 배열에 초기값 부여
var b : Array<Int> = [1, 2, 3, 4] // 배열에 초기값 부여
var c : Array<Double> = [1.2, 2.3, 3.4, 4.5] // 배열에 초기값 부여

@frozen struct Array<Element>
//@frozen은 구조체에 저장프로퍼티 추가, 삭제 불가능

let number = [1, 2, 3, 4] // Type : Array<Int>
let odd : [Int] = [1, 3, 5]
let even : Array<Int> = [2, 4, 6]

let animal = ["dog", "cat", "cow"] // Type : Array<String>

Array(repeating:count:)

특정값으로 원하는 갯수 만큼 초기화

var x = [0,0,0,0,0]
print(x)
var x1 = Array(repeating: 0, count: 5)
print(x1) // 0 을 5번 반복
var x2 = [Int](repeating:1, count:3)
print(x2) // 1 을 3번 반복
var x3 = [String](repeating: "a", count: 4)
print(x3) // a 를 4번 반복

for ~ in 으로 배열 항목 접근

let colors = ["Red", "Green", "Blue"]
for color in colors {
    print(color)
}
// colors 의 항목이 하나씩 출력

//count , isEmpty
let num = [1, 2, 3, 4]
var x = [Int]()

print(num.isEmpty) // 배열num이 비어있는가? false
print(x.isEmpty) // 배열x가 비어있는가? true
if num.isEmpty { // 배열num이 비어 있다면?
    print("비어있습니다") // "비어있습니다" 출력
} else {    // 비어있지 않다면?
    print(num.count)  // num의 항목 갯수 출력
}

first , last 프로퍼티

// 빈 배열이라면 그 값은 nil 값이 나온다
let num = [1, 2, 3, 4]
var x = [Int]()

print(num.first, num.last) //Optional(1) Optional(4)
print(num1.first, num1.last) //nil nil
if let f = num.first, let l = num.last { //값이 옵셔널이기 때문에 언래핑
    print(f,l) //1, 4
}

첨자(subscript)로 항목 접근

var num = [1,2,3,4]
print(num[0], num[3]) // num의 첫번째와 4번째 항목 출력
print(num.first!) // num.first는 옵셔널 값이므로 언래핑
for i in 0 ... num.count - 1 { // 배열의 시작은 0 부터
    print(num[i])
}
for i in 0 ... num.endIndex - 1 { // 배열의 시작은 0 부터
    print(num[i])
}
num[0...2] = [10,20,30] //num의 첫번째 ~ 세번째 항목 바꾸기
print(num)

Array 추가 / 제거

var num = [1,2,3]
num.append(4) // 미자막항목에 4 추가
num.append(contentsOf: [6,7,8]) // 마지막항목애 6,7,8 추가
num.insert(5, at:4) // 5번재 항목에 5 추가
num.remove(at:3) // 4번째 항목 삭제
num.removeLast() // 마지막 항복 제거
print(num.firstIndex(of: 2)) // 2가 처음으로 나오는 첨자 -> Optional(1)
// func firstIndex(of: Element) -> Int?
if let i = num.firstIndex(of: 2) { //옵셔널값 언래핑
    num[i] = 20 // 2가 처음으로 나온 항목을 20 으로 바꿈
}
num = num + num // num 에 num 추가
num += [8,9] // 마지막 항목에 8, 9 추가
num.removeAll() // 빈배열

Array는 구조체이므로 값 타입이다

var num = [1,2,3]
var x = num // 변수 x 에 배열 num의 값을 할당
num[0] = 100 // num의 첫번째 항목을 100으로 바꿈
print(num) // 100,2,3
print(x) // 1,2,3 -> num의 값이 변해도 x 의 값은 변하지 않는다

Array 최대값 최소값 : max(), min()

func min() -> Element?
-> 강제 언래핑 이나 옵셔널 바인딩을 해서 값을 뽑아 내야 함

var num = [1,2,3,10,20]
print(num)
print(num.min()) // Optional(1)
print(num.max()) // Optional(20)
print(num.min()!) // 1
print(num.max()!) // 20

Array 정렬

var num = [1,20,3,2,10]
num.sort() // 오름차순 정렬하여 원본 변경
print(num.sorted()) // 오름차순 정렬 결과를 리턴하고, 원본은 변경X

num[0...4] = [2,3,10,20,1]
num.sort(by:>) // 내림차순 정렬하여 원본 변경
print(num.sorted(by: >)) // 내림차순 정렬 결과를 리턴하고, 원본 변경X
num.reverse() // 반대로 정렬하여 원본 변경

Array를 String으로 변환

var x = ["a","1","c","ab","김"]
var x1 = x.joined() //배열을 String으로 만들기
print(x1) //a1cab김
print(type(of: x1)) //String
print(x.joined(separator: "-")) //a-1-c-ab-김
var x2 = x.reduce("",{$0+$1}) // reduce 이용
print(x2) //a1cab김

String을 Array로 변환

let str = "Hi, Swift!"
let arr = Array(str) //String을 배열로 변환
print(arr) // ["H", "i", ",", "S", "w", "i", "f", "t", "!"]
let arr1 = str.map {String($0)} //map 이용
print(arr1)
print(type(of: arr1)) //Array<Stirng>

let str1 = "123456789"
let arr2 = Array(str1)
print(arr2)
print(type(of: arr2)) //Array<Character>

참고자료 : https://developer.apple.com/documentation/swift/array
출처 : https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA/playlists

profile
개발자를 꿈꾸는 사람 입니당

0개의 댓글