English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 배열, 배열 생성, 배열 값 접근 및 배열의 일부 일반적인操作을 배울 것입니다.
이전 글Swift 데이터 타입기사에서는 단일 값을 저장할 수 있는 특정 데이터 타입 변수를 생성하는 방법을 배웠습니다./상수를 사용합니다.
하지만, 동일한 데이터 타입의 여러 값을 저장하려면 어떻게 해야 하나요. Swift에서는 다음과 같은 배열 그런 것들.
배열은 단순한 컨테이너로, 데이터 타입의 여러 데이터(값)를 순서대로 저장할 수 있습니다. 즉, 배열 내의 각 항목과 동일한 순서로 요소를 얻을 수 있습니다.
배열은 Int, String, Class 등 다양한 데이터 타입의 값을 저장할 수 있습니다.
괄호 내 []에 데이터 타입을 지정하여 빈 배열을 생성할 수 있습니다.
기억해야 할 것은 괄호 내에 타입을 포함해야 합니다. 그렇지 않으면 Swift는 일반 데이터 타입으로 간주하고 괄호 내에 단일 값을 저장할 수밖에 없습니다.
let emptyIntArr: [Int] = [] print(emptyIntArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[ ]
위의 프로그램에서는 빈 배열 emptyIntArr이라는 상수를 선언했습니다. 이 상수는 정수 배열을 저장할 수 있으며 0 값을 초기화합니다.
또는
또한 다음과 같이 빈 배열을 정의할 수 있습니다:
let emptyIntArr: Array<Int> = Array() print(emptyIntArr)
또는
Swift는 타입 추론 언어이므로 타입을 명시적으로 지정하지 않고도 배열을 생성할 수 있습니다. 그러나 초기화할 때는 몇 가지 값을 사용하여 컴파일러가 타입을 추론할 수 있어야 합니다:
let someIntArr = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(someIntArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
위의 프로그램에서는 타입을 명시적으로 지정하지 않아도 될 수 있는 someIntArr이라는 상수를 선언했습니다. 또한, 다음과 같이 사용했습니다.값 1、2、3、4、5、6、7、8、9 배열을 초기화했습니다.
Swift에서는 값이 반복되는 횟수를 지정하여 배열을 구성할 수 있습니다. 이는 배열 초기화자와 repeating 및 count를 함께 사용하여 완성됩니다.
let arrWithRepeatingValues = Array(repeating: "안녕하세요, 세계", count: 4) print(arrWithRepeatingValues)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
["안녕하세요, 세계", "안녕하세요, 세계", "안녕하세요, 세계", "안녕하세요, 세계"]
위의 프로그램에서는 arrWithRepeatingValues라는 상수를 정의하여 문자열을 저장했습니다。 Hello,World 의 배열,와 같은 값을 반복4count와 같이 예제에서 지정된 횟수로 반복
주의:Swift에서는 다른 프로그래밍 언어와 같이 고정 길이의 배열을 생성할 수 없습니다. 고정 길이의 배열은 배열이 초기화 시 정의한 요소보다 더 많은 요소를 포함할 수 없다는 것을 의미합니다。
문자열 배열을 저장할 수 있는 상수를 다음과 같이 정의할 수 있습니다:
let intArr = [21, 34, 54, 12]
배열에 값이 어떻게 저장되는지 시각적 표현은 다음과 같습니다:
모든 배열은 인덱스 0에서 시작합니다. 첫 번째 요소는 인덱스 0에 저장되고, 두 번째 요소는 다음 인덱스(1)에, 그리고 이렇게 계속됩니다。
다음과 같이 사용할 수 있습니다 하인덱스 문법을 사용하여 배열의 요소에 접근할 수 있습니다.也就是说,你需要在数组名称后的方括号内包括要访问的值的索引。
위와 같이 배열 intArr를 선언한 경우, 첫 번째 요소는 intArr[0]입니다. 두 번째 요소는 intArr[1],그리고 이렇게 계속됩니다。
let intArr = [21, 34, 54, 12] print(intArr[0]) print(intArr[1] print(intArr[2] print(intArr[3]
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
21 34 54 12
다음과 같이 for-in 루프로 배열의 요소에 접근할 수 있습니다. 더 많은 정보는 다음을 참조하세요Swift for-in 루프。
배열의 요소를 수정하려면 인덱스 문법과 할당 연산자를 사용할 수 있습니다.也就是说,你需要在数组名称后面的方括号中包含你想要更新的值的索引,然后是赋值操作符和新值。
var intArr = [21, 34, 54, 12] intArr[0] = 12 intArr[1] = 42 intArr[2] = 45 intArr[3] = 21 print(intArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[12, 42, 45, 21]
다음과 같이 새로운 값으로 배열의 모든 요소를 수정할 수 있습니다:
var intArr = [21, 34, 54, 12] intArr = [1,2,3] print(intArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[1, 2, 3]
하지만, 기존 배열에 새로운 요소를 추가하려면 인덱스 문법을 사용할 수 없습니다. 이렇게 하면 결국 오류가 발생합니다. 다음과 같은 작업을 수행할 수 없습니다:
var intArr = [21, 34, 54, 12] intArr[4] = 10
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
fatal error: Index out of range
newElement를 배열 intArr에 할당할 때, 위의 프로그램은 오류를 발생시킵니다. 이는 intArr가 아직 인덱스에4추가적인 메모리를 할당하지만, 주어진 값을 저장할 수 없습니다。
새로운 요소를 정확하게 배열에 삽입하기 위해 array의 append() 메서드를 사용합니다. append() 메서드의 사용 방법은 나중에 설명할 것입니다。
이 속성은 배열이 비어 있는지 여부를 결정합니다. 배열에 어떤 값도 포함되어 있지 않으면 true를 반환하고, 그렇지 않으면 false를 반환합니다。
let intArr = [21, 34, 54, 12] print(intArr.isEmpty)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
false
此属性用于访问数组的第一个元素。
let intArr = [21, 34, 54, 12] print(intArr.first)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
Optional(21)
同样,您可以使用 last 属性访问数组的最后一个元素。
append函数用于在数组末尾插入/附加元素。
var intArr = [21, 34, 54, 12] intArr.append(32) print(intArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[21, 34, 54, 12, 32]
您还可以将一个数组的内容附加到另一个数组,如下所示:
var firstArr = [1,2,3,4] var secondArr = [5,6,7,8] firstArr.append(contentsOf: secondArr) print(firstArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[1, 2, 3, 4, 5, 6, 7, 8]
此函数用于在数组的特定索引处插入/附加元素。
var intArr = [21,34,54,12] intArr.insert(22, at: 1) print(intArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[21, 22, 34, 54, 12]
同样,您也可以使用removeproperty删除指定索引处的元素。
此函数从数组中删除并返回在指定位置指定的值。
var strArr = ["ab","bc","cd","de"] let removedVal = strArr.remove(at: 1) print("removed value is \(removedVal)") print(strArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
removed value is bc ["ab", "cd", "de"]
同样,您也可以使用removeFirst删除数组的第一个元素,removeLast删除数组的最后一个元素以及removeAll清空数组的功能。
此函数以相反的顺序返回数组的元素。
var intArr = [21,22,23,24] let reversedArr = Array(intArr.reversed()) print(reversedArr)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
[24, 23, 22, 21]
此属性返回数组中元素的总数。
let floatArr = [10.2,21.3,32.0,41.3] print(floatArr.count)
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
4
Swift에서 인덱스 문법을 사용하여 배열 요소에 접근할 때, 해당 값이 인덱스에 위치해 있어야 합니다. 그렇지 않으면 실행 시간 중단이 발생합니다. 예제를 통해 보겠습니다:
let intArr = [21, 34, 54, 12] print(intArr[-1]
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
fatal error: Index out of range
위 프로그램에서, 인덱스 -1 중값이 없습니다. 따라서 인덱스에 있는 값을 접근하려고 시도할 때, 실행 시간 중단이 발생합니다.
이러한 상황을 방지하기 위해, 먼저 제거하고자 하는 요소의 인덱스를 찾아야 합니다. 그런 다음 인덱스 위치의 요소를 다음과 같이 제거합니다:
var intArr = [21, 34, 54, 12] if let index = intArr.index(of: 34) { print("발견된 인덱스") let val = intArr.remove(at: index) print(val) }
이 프로그램을 실행할 때, 출력은 다음과 같습니다:
발견된 인덱스 34