** 튜플을 제외한 나머지는 저장되는 데이터 타입이 동일해야함.
var numbers = [1, 2, 3, 4]
처음부터 원소를 포함하여 선언. 별도의 배열 선언이 필요 없음.
// for 문 예제
let length = numbers.count // 이렇게만 쓴다
for i in 0..<length{ // 길이로 순회
print(numbers[i])
}
for i in numbers { // 이터레이터
print(i)
print(i.index(of: row))
}
let nums: [Int] = [1,2,3,4,5]
for (idx, n) in nums.enumerated(){
print("\(idx) : \(n)")
}
선언 -> 메모리 공간 차지 X, 초기화 시 할당.
두 가지 형식 사용 가능.
// 1. Array 클래스 사용
var nums = Array<Int>() // 선언, 초기화 동시에. () 가 붙어 생성자 호출되는 듯
var nums : Array<Int> // 선언. 자료형만 표시함
nums = Array() // 초기화
// 2. 배열 정의 구문 사용
var nums = [Int]() // 선언 초기화 동시에
var nums : [Int] // 선언
nums = [] // 빈 배열 생성 후 할당. 생성자를 사용하지 않기 때문에 엄밀하게 초기화는 아님.
// 굳이 한다면 nums = [Int]() 이런식으로 사용 가능
// 선언, 초기화 예시
var nums : [Int] // 선언
nums = [Int]() // 초기화
var cities : [String] // 선언
cities = [] // 배열 할당
var aged : [Int] = [] // 타입 어노테이션 + 초기화
var visited : Array<Bool> = [Bool]() // 타입 어노테이션 + 제네릭 + 초기화
...
tip) isEmpty 괄호 없이 호출
예시
var nums = [Int]()
nums.append(1)
nums.append(contentsOf: [2,3,4])
nums.insert(999, at: 2)
print(nums)
// [1, 2, 999, 3, 4]
insert
는 예외적으로 가능한 인덱스 + 1 에 대해서는 IndexError 없이 삽입 해준다. append 와 동일하게 동작.
var nums = [0,1,2,3]
nums[1...2] = [9,9,9,9,9] // 슬라이싱한 범위 이상의 배열을 넣을 수도 있다.
print(nums)
// [0, 9, 9, 9, 9, 9, 3]
nums[2...6] = [5] // 범위 이하도 마찬가지
print(nums)
// [0, 9, 5]
배열의 확장 축소가 일어남.