- Algorithms
* sort(_:)
주어진 closure에 따른 배열의 순서를 결정한다.
func sort(isOrderedBefore: (T, T) -> Bool
예)
let array = [3, 2, 5, 1, 4]
array.sort { $0 < $1 }
// array is [1, 2, 3, 4, 5]
array.sort { $1 < $0 }
// array is [5, 4, 3, 2, 1]
* reverse() -> Array<T>
배열의 인덱스를 역순으로 배열을 반환한다.
func reverse() -> Array<T>
예)
let array = [1, 2, 3, 4, 5]
let reversedArray = array.reverse()
// reversedArray = [5, 4, 3, 2, 1]
* filter(_ :) -> Array<T>
주어진 closure의 조건을 포함하는 요소들의 배열을 리턴한다.
func filter(includeElement: (T) -> Bool) -> Array<T>
예)
let array = [0, 1, 2, 3, 4, 5, 6, 7]
let filteredArray = array.filter { $0 % 2 == 0 }
// filteredArray is [0, 2, 4, 6]
* map<U>(_ :) -> Array<U>
각 요소의 값을 변형하기 위해 주어진 closure를 적용한 결과 배열을 리턴한다.
func map<U>(transform: (T) -> U) -> Array<U>
예)
let array = [0, 1, 2, 3]
let multipliedArray = array.map { $0 * 2 }
// multipliedArray is [0, 2, 4, 6]
let describedArray = array.map { "Number: \($0)" }
// describedArray is [Number: 0, Number: 1, Number: 2, Number: 3]
* reduce<U>(_:, combine: (U, T)->U) -> U
각 요소에 reduction closure를 적용한 결과를 단일값으로 리턴한다.
func reduce<U>(initial: U, combine: (U, T) -> U) -> U
예)
let array = [1, 2, 3, 4, 5]
let addResult = array.reduce(0) { $0 + $1 }
// addResult is 15
// 초기값은 0
let multiplyResult = array.reduce(1) { $0 * $1 }
// multiplyResult is 120
// 초기값 1
- Operators
* +=
기존 배열에 요소나 요소의 열을 추가한다.
@assignment func += <U>(inout lhs: Array<T>, rhs: U)
예)
var array = [0, 1, 2]
array += 3
// array is [0, 1, 2, 3]
array += [4, 5, 6]
// array is [0, 1, 2, 3, 4, 5, 6]
추가될 요소의 type은 기존 type과 일치해야 한다.
다음 구문은 오류를 발생시킨다.
array += "hello"
// Error: could not find an overload for '+=' that accepts the supplied arguments
변수가 아닌 상수에 배열을 추가하게 되면 다음과 같은 오류가 발생한다.
let array = [0, 1, 2]
array += 3
// Error: could not find an overload for '+=' that accepts the supplied arguments
- 다중 배열(Multidimensional Array)
* 정적 배열선언
var myFirstMultiArray : [[Int]] = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]
println(myFirstMultiArray) // [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
* 동적 배열선언
var mySecondMultiArray = Array<Array<Int>>()
var value = 1
for column in 0 ... 3 {
var columnArray = Array<Int>()
for row in 0 ... 3 {
columnArray.append(value++)
}
mySecondMultiArray.append(columnArray)
}
for i = 0; i < 4; i++ {
for j = 0; j < 4; j++ {
print("\(mySecondMultiArray[i][j])" + "\t")
}
println()
}
'Smart Device > Swift' 카테고리의 다른 글
Swift Numeric Types (0) | 2014.06.12 |
---|---|
Swift Dictionary (0) | 2014.06.12 |
Swift Array #1 (0) | 2014.06.11 |
Swift String (0) | 2014.06.11 |
Swift Subscript (0) | 2014.06.11 |