//타입선언 - 아래 코드 다 같음let emptyArray: [Int] = []
let emptyArray2 =Array<Int>()
let emptyArray3 = [Int]()
//==============let emptyArray = [] //타입을 유추할 수 없어서 에러남
마지막 코드 에러
배열이 비어있는지 확인하는 법
isEmpty
let nums = [1, 2, 3]
nums.count //3//=================//배열이 비어있는지 확인
nums.count ==0//이렇게도 확인할 수 있는데 //false
nums.isEmpty //isEmpty 를 사용하면 더 편리 함 //false
배열 요소에 접근하는 방법 (Accessing Elements)
서브스크립트 문법을 사용하는데, 두가지만 기억하면 된다 스퀘어브라켓[]과 인덱스
let fruits = ["Apple", "Banana", "Melon"] //
fruits[0] //첫번째 인덱스에 접근
fruits[2] //마지막 인덱스에 접근
fruits[0...1] //특정 범위 접근
이렇게 접근해도 되지만 만약에 인덱스 숫자를 잘못 입력한다면?
에러가 난다.
위에 fruit 배열에는 인덱스가 2까지 있기 때문에 이보다 큰 숫자를 입력하면 값이 없기 때문에 오류가 난다.
그래서 정수인덱스 대신에 속성으로 제공하는 인덱스를 사용하면 안전한 코드를 작성 할 수 있다.
startIndex
첫번째 인덱스 접근
index(before: .endIndex)
마지막 인덱스 접근
fruits[fruits.startIndex] //첫번째 인덱스 접근//fruits[fruits.endIndex] //endIdex 는 배열의 마지막 뒤에 접근하기 떄문에 오류남
fruits[fruits.index(before: fruits.endIndex)] //마지막 인덱스 이전 인덱스 접근
이것보다 더 안전하게 접근하는 방법이 있다
아래 두개의 속성은 값이 없으면 nil 를 리턴하고 끝난다. 더 안전하게 접근 할 수 있음.
인덱스를 계산할 수고로움도 덜 수 있다
.first
.last
fruits.first
fruits.last
배열 범위를 지정해서 접근하는 방법
let list = ["A", "B", "C", "D", "E"]
list[0...2]
list[2...] //배열에서는 범위가 정해져 있으니까 one-sided range 를 사용할 수 있다
list[...2]
근데 배열이 100000000000000000개 라면? 끝도없이 배열을 받아오면 범위를 알 수 없다
let a = ["A", "B", "C"]
let randomNumbers = [1, 2, 3, 1, 4, 5, 2, 6, 7, 5, 0]
randomNumbers.min() // 0
a.min() //A 문자열도 아스키 코드로 인해 가장 작은 크기를 구할 수 있음
a.max() //C
contains 배열에 값이 있는지 확인함. 단순히 존재여부만 확인한다.
let randomNumbers = [1, 2, 3, 1, 4, 5, 2, 6, 7, 5, 0]
randomNumbers.contains(1) //true//짝수가 포함되어 있는지 클로저로 구현let r3 = randomNumbers.contains { $0.isMultiple(of: 2)} // true
.first 인덱스 혹은 요소 검색 가장 먼저 true 를 리턴하는 결과를 리턴함. 검색에 실패하면 nil 을 리턴한다. .first 입력하면 여러 기능이 있다는걸 알 수 있다
let randomNumbers = [1, 2, 3, 1, 4, 5, 2, 6, 7, 5, 0]
//first(where: )
randomNumbers.first {
$0.isMultiple(of: 2) // 가장 처음의 짝수 리턴. 위 배열에선 2
}
//=========================
randomNumbers.firstIndex{
$0.isMultiple(of: 2) //첫번째 짝수 검색. 2의 '인덱스'가 리턴 됨. 위 배열에선 2가 첫번째 짝수이므로 2의 인덱스인 1이 리턴됨
}
//firstIndex(of: )
randomNumbers.firstIndex(of: 7) // 7의 인덱스 8이 리턴됨//==========================//첫번째 혹은 마지막 요소 검색. 해당요소의 인덱스 리턴
randomNumbers.firstIndex(of: 5) //5 첫번째 5는 인덱스5
randomNumbers.lastIndex(of: 5) //9 마지막 5는 인덱스 9
댓글