본문 바로가기
Smart Device/Swift

Swift Array #1

by 언덕너머에 2014. 6. 11.

- Creating an Array

* init()

  type T의 비어 있는 배열을 생성

  init()


  예)

  var emptyArray = Array<int>()

  위 구분은 아래 구문과 동일하다.

  var equivalentEmptyArray = [Int]()


* init(count:, repeatedValue:)

  주어진 숫자(count)만큼의 같은 값(repeatedValue)으로 초기화된 요소를 생성한다.

  init(count: Int, repeatedValue: T)

  

  예)

  var numericArray = Array(count: 3, repeatedValue: 42)

  // numericArray is [42, 42, 42]

  초기화 : numericArray = []

 

  var stringArray = Array(count: 2, repeatedValue: "Hello")

  // stringArray is ["Hello", "Hello"]


- Accessing Array Elements

* subscript(Int) -> T { get set }

  대괄호를 사용해서 배열에 존재하는 요소를 가져오거나 설정한다.


  예)

  let subscriptableArray = ["zero", "one", "two", "three"]

  let zero = subscriptableArray[0]

  // zero is "zero" 

  let three = subscriptableArray[3]

  // three is "three"

  subscriptableArray[0] = "nothing"

  subscriptableArray[3] = "three items"

  배열의 요소를 추가하기 위해서 다음과 같이 사용하면 오류가 발생한다.

  subscriptableArray[4] = "new item"

  // Fatal error: Array index out of range

  배열의 요소를 추가하기 위해서는 append() 함수나 += 언산자를 사용해야 한다.


* subscript(Range<Int>) -> Slice<T>

  대괄호안에 정의된 정수를 사용해서 해당 요소를 가져오거나 설정한다.

  subscript(subRange: Range<Int>) -> Slice<T> { get { }    set { } }


  예)

  배열에서 하나 또는 그 이상의 요소에 접근하기 위해서는 배열 첨자를 사용하면 된다.

  var subscriptableArray = ["zero", "one", "two", "three"]

  let subRange = subscriptableArray[1...3]

  // subRange = ["one", "two", "three"]

  배열 첨자를 사용해서 해당 배열의 값을 변경할 수 있다.

  subscriptableArray[1...2] = ["oneone", "twotwo"]

  // subscriptableArray is now ["zero", "oneone", "twotwo", "three"]

  배열 첨자를 사용해서 배열의 값을 초기화 할 수 있다.

  subscriptableArray[1...2] = []

  // subscriptableArray is now ["zero", "three"]

  다음과 같이 사용하면 오류가 발생한다.

  subscriptableArray[4...5] = ["four", "five"]

  // Fatal error: Array replace: subRange is inside-out

  대신에 append()함수나 += 연사자를 사용하면 된다.


* isEmpty

 배열 항목이 비어 있는지를 검사한다.

  isEmpty의 값은 boolean형태이며, 배열이 비어 있으면 true, 비어 있지 않으면 false를 반환한다.


- Adding and Removing Elements

* append()

  배열 마지막 요소에 새로운 요소를 추가한다.

  mutating func append(newElement: T)


  예)

  var array = [0, 1]

  array.append(2)

  // array is [0, 1, 2]

 

  array.append(3)

  // array is [0, 1, 2, 3]

  변수(var)로 선언된 배열에서만 사용 가능하고 상수(let)로 선언된 배열에서는 사용할 수 없다.

  let anotherArray = [0, 1]

  anotherArray.append(2)

  // Error: immutable value of type 'Array<Int>' only has mutating members named 'append'


* insert(_ :, atIndex:)

  주어진 인덱스 위치에 요소를 추가한다.

  mutating func insert(newElement: T, atIndex: Int)


  예)

  var array = [1, 2, 3]

  array.insert(0, atIndex: 0)

  // array is [0, 1, 2, 3]

  인덱스는 배열의 요소 수보다 같거나 작아야 한다. 다음과 같이 사용하면 오류가 발생한다.

  array.insert(6, atIndex: 6)

  // Fatal error: Array replace: subRange is inside-out

  변수(var)로 선언된 배열에서만 사용 가능하고 상수(let)로 선언된 배열에서는 사용할 수 없다.

  let array = [1, 2, 3]

  array.insert(0, atIndex: 0)

  // Error: immutable value of type 'Array<Int>' only has mutating members named 'insert'


* removeAtIndex() -> T

  주어진 인덱스의 요소를 제거한 배열을 반환한다.

  mutating func removeAtIndex(index: Int) -> T


  예)

  var array = [0, 1, 2, 3]

  let removed = array.removeAtIndex(0)

  // array is [1, 2, 3]

  // removed is 0

  인덱스는 배열의 요소 수보다 작아야 한다. 다음과 같이 사용하면 오류가 발생한다.

  array.removeAtIndex(5)

  // Fatal error: Array index out of range

  변수(var)로 선언된 배열에서만 사용가능하고 상수(let)로 선언된 배열에서는 사용할 수 없다.

  let array = [0, 1, 2]

  array.removeAtIndex(0)

  // Error: immutable value of type 'Array<Int>' only has mutating members named 'removeAtIndex'


* removeLast() -> T

  배열의 마지막 요소를 제거한다.

  mutating func removeLast() -> T


  예)

  var array = [1, 2, 3]

  let removed = array.removeLast()

  // array is [1, 2]

  // removed is 3

  위 매서드를 호출하기 전에 배열의 요소가 적어도 하나 이상은 있어야 한다. 그렇지 않으면 다음과

  같은 오류가 발생한다.

  var emptyArray = Int[]()

  let tryToRemove = emptyArray.removeLast()

  // Fatal error: can't removeLast from an empty Array

  변수(var)로 선언된 배열에서만 사용가능하고 상수(let)로 선언된 배열에서는 사용할 수 없다.

  let array = [1, 2]

  array.removeLast()

  // Error: immutable value of type 'Array<Int>' only has mutating members named 'removeLast'  

* removeAll(keepCapacity: = false)

  컬렉션에서 모든 요소를 제거하고 storage buffer를 지운다..

  mutating func removeAll(keepCapacity: Bool = false)


  예)

  var array = [0, 1, 2, 3]

  array.removeAll()

  let count = array.count

  // count is 0

 변수(var)로 선언된 배열에서만 사용가능하고 상수(let)로 선언된 배열에서는 사용할 수 없다.

  let array = [1, 2]

  array..removeLast()

  // Error: immutable value of type 'Array<Int>' only has mutating members named 'removeAll'

'Smart Device > Swift' 카테고리의 다른 글

Swift Dictionary  (0) 2014.06.12
Swift Array #2  (0) 2014.06.11
Swift String  (0) 2014.06.11
Swift Subscript  (0) 2014.06.11
Swift 연산자  (0) 2014.06.10