배열은 순서대로 같은 타입의 값을 저장한다. 같은 값이 배열에 다른 순서로 존재 할 수 있다.
배열 타입 구문
swift 배열은 Array<Element> 형식으로 작성되며, 여기서 Element란 배열이 저장할 수 있는 값의 유형이다.
[Element] 로 축약된 형태로 작성할 수 있으며, 둘 모두 기능적으로는 동일하지만 축약된 형태가 더 선호된다.
var somInts: Array<Int>
var somInts: [Int]
빈 배열 생성
초기화 구문을 사용하여 타입을 포함한 빈 배열을 생성할 수 있다.
var someInts: [Int] = []
somInts.count // 0
someInts 변수의 타입은 초기화 타입을 통해 [Int] 로 추론된다.
var someInts: [Int] = []
someInts.append(3)
// someInts 는 이제 1개의 값(3)을 가진 배열이 되었다.
somInts = []
// someInts 는 이제 비어있는 배열이 되었다. 하지만 타입은 여전히 [Int] 이다.
기본값 배열 생성
같은 값을 기본 값으로 설정하고 크기를 고정하여 배열을 생성하는 초기화
적합한 타입 (파라미터 명 repeating)의 기본값과, 새로운 배열에 반복될 값의 횟수 (파라미터 명 count)를 초기화에 전달한다.
// Array(repeating: 기본 값, count: 갯수)
var threeDoubles = Array(repeating: 0.0, count: 3)
// threeDoubles 의 타입은 [Double]이고, 결과는 [0.0, 0.0, 0.0] 이다.
// var threeDoubles = [Double] = [0.0, 0.0, 0.0] 와 같다.
두 개의 배열을 더해 새로운 배열 생성
동등한 타입의 배열 2개를 덧셈 연산자(+)를 통해 합쳐서 새로운 배열을 만들 수 있다.
새로운 배열의 타입은 합쳐진 2개의 배열의 타입으로 부터 추론된다.
var threeDoubles = Array(repeating: 0.0, count: 3)
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles 의 타입은 [Double]이고, 결과는 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5] 이다.
배열 리터럴로 생성
배열 콜렉션으로 하나 이상의 값을 작성해서 배열을 생성할 수 있다.
배열 리터럴은 값을 리스트로 작성하고 콤마로 구분하며 대괄호로 둘러싸서 작성한다.
배열 리터럴 안의 모든 값은 같은 타입이기 때문에
Swift 가 타입 추론을 하므로 배열의 타입을 명시하지 않아도 된다.
// [value1, value2, value3]
// String 값을 저장하는 배열 생성
var shoppingList: [String] = ["Eggs", "Milk"]
// shoppingList은 두개의 초기 항목으로 으로 초기화 되었다.
// Swift 의 타입추론 덕에 같은 타입의 값을 포함하는 배열 리터럴로 초기화하면
// 배열의 타입을 명시할 필요가 없다.
var shoppingList = ["Eggs", "Milk"]
배열의 접근과 수정
메서드와 프로퍼티, 또는 서브 스크립트 구문을 사용해 배열에 접근 및 수정이 가능하다.
.count
배열의 아이템 갯수를 알려면 읽기 전용 count 프로퍼티로 확인하면 된다.
var numberList = [1, 2]
print(numberList.count) // 2
.isEmpty
부울 isEimpty 프로퍼티를 사용해서 배열의 count 프로퍼티 값이 0인지 판단한다.
var numberList = [1, 2]
if numberList.isEmpty {
print("해당 배열은 비어있습니다.")
} else {
print("해당 배열은 비어있지 않습니다.")
}
// print 해당 배열은 비어있지 않습니다.
.append(_:)
append 메서드를 호출하여 배열의 끝에 새로운 아이템을 추가 할 수 있다.
var numberList = [1, 2]
numberList.append(3)
// numberList 배열에 3을 추가한다.
// 이제 numberList 는 1, 2, 3을 가진다.
+= ["item"]
하나 이상의 동등한 아이템의 배열을 덧셈 대입 연산자를 통해 추가 할 수 있다.
var numberList = [1, 2]
numberList += [3, 4, 5]
// 이제 numberList 는 1, 2, 3. 4. 5 를 가진다.
Array[index]
배열의 이름 바로 뒤에 대괄호를 붙이고 가져올 값의 인덱스를 넣어서 값들을 수정 할 수 있다.
해당 index에 있는 값 가져오기
var fruits = ["Apple", "Orange", "Grape"]
var fuitsItem = fruits[1] // "Orange"
// fruits의 1번째 index 에 있는 값을 가져온다.
해당 index에 존재하는 값 변경.
var fruits = ["Apple", "Orange", "Grape"]
fruits[0] = "Blueberry"
// fruits의 0 번째 index에 있는 값을 Blueberry 로 바꾼다.
// fruits ->["Blueberry", "Orange", "Grape"]
변경할 값들이 다른 범위와 다른 길이를 가지고 있더라도 서브 스크립트 구문으로 범위 안의 값을 한번에 변경 할 수 있다.
var fruits = ["Apple", "Orange", "Grape", "Lemon"]
// 1번째, 3번째 인덱스인 Orange와 Lemon 을
// Peach와 Cherry로 변경한다.
fruits[1..3] = ["Peach", "Cherry"]
.insert(_:at:)
특정 index에 아이템을 추가 할 수 있다.
var fruits = ["Apple", "Orange", "Grape", "Lemon"]
// insert(추가할 아이템, at: 인덱스)
// 0번째인 아이템 앞에 Pineapple을 추가한다.
fruits.insert("Pineapple", at: 0)
// fruits는 ["Pineappla", "Apple", "Orange", "Grape", "Lemon"] 이 되었다.
.remove(at:)
특정 index에 아이템을 삭제 할 수 있다.
이 메서드는 해당 index의 아이템을 삭제하고,
삭제한 아이템을 반환한다. (반환된 값이 필요한 경우)
var fruits = ["Apple", "Orange", "Grape", "Lemon"]
// remove(at: 삭제를 원하는 아이템 인덱스)
let likeFruits = fruits.remove(at: 1)
// 이제 fruits는 ["Apple", "Grape", "Lemon"] 이 되었다.
// likeFruits 에는 "Orange" 가 들어갔다.
.removeLast()
배열의 마지막 item 을 제거하고 싶다면 removeLast() 를 사용한다.
이 메서드는 마지막index의 아이템을 삭제하고,
삭제한 아이템을 반환한다. (반환된 값이 필요한 경우)
var fruits = ["Apple", "Orange", "Grape", "Lemon"]
let likeFruits = fruits.removeLast()
// 이제 fruits는 ["Apple", "Orange", "Grape"] 가 되었다.
// likeFruits 에는 "Lemon" 이 들어갔다.
배열의 반복
for-in
for-in 반복문을 통해서 배열 안에 있는 전체 값을 알 수 있다.
var fruits = ["Apple", "Orange", "Grape", "Lemon"]
for item in fruits {
print(item)
}
// Apple
// Orange
// Grape"
// Lemon
enumerated()
각 아이템의 인덱스가 아니라 값도 필요하다면 enumerated() 메서드를 사용한다.
배열의 각 아이템에 대해 정수와 아이템을 조합하여 튜플로 반환한다.
var fruits = ["Apple", "Orange", "Grape", "Lemon"]
for (index, value) in fruits.enumerated() {
print("과일 \(index + 1) : \(value)")
}
// 과일 1 : Apple
// 과일 2 : Orange
// 과일 3 : Grape
// 과일 4 : Lemon
'비공개 > 공식문서 간단정리' 카테고리의 다른 글
[Swift] 논리 연산자 (0) | 2023.12.13 |
---|---|
[Swift] 범위 연산자 (0) | 2023.12.13 |
[Swift] Nil-결합 연산자 (0) | 2023.12.13 |
[Swift] 삼항 조건 연산자 (0) | 2023.12.13 |
[Swift] 복합 대입 연산자 (0) | 2023.12.13 |