Array

suhwj·2022년 3월 30일
0

swift 문법

목록 보기
12/15
post-thumbnail

스위프트는 튜플 외에도 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입을 제공합니다.

컬렉션 타입에는 '배열', '딕셔너리', '세트'가 있습니다.

  • Array (배열) - 멤버가 순서를 가진 리스트 형태의 컬렉션 타입
  • Dictionary (딕셔너리) - 키(Key)와 값(Values)의 쌍으로 이루어진 컬렉션 타입
  • Set (세트) - 순서가 없고, 멤버가 유일한 것을 보장하는 컬렉션 타입

배열 생성 (Create Array)

Tip: 정식 문법보다는 단축 문법을 주로 사용합니다.
먼저 정식 문법의 모습과 어떻게 생성하는지를 봅시다.

// 생성 방법: (let 또는 var) 배열 이름: Array<배열의 타입>
 
let arr1: Array<Int> // 상수형 정수 배열
var arr2: Array<String> // 변수형 문자열 배열

실제로 코드를 짤 때는 정식 문법을 자주 쓰지 않습니다. (좀 귀찮거든요...)

● 단축 문법

Tip: 'Array<배열의 타입>'에서 '[배열의 타입]'으로 바뀐 거라고 생각하면 쉽습니다.

단축 문법은 정식 문법보다 훨씬 간단합니다.

// 생성 방법: (let 또는 var) 배열 이름: [배열의 타입]
 
let arr1: [Int] // 상수형 정수 배열
var arr2: [String] // 변수형 문자열 배열

대괄호 사이에 배열의 타입을 명시해주기만 하면 됩니다. (정식 문법에 비해 편합니다)
실제 코드를 짤때, 단축 문법을 주로 사용하여 배열을 생성합니다.

◎ 형식 추론 (타입 유추)

※ 배열의 타입을 명시하지 않아도 되지만, 빈 배열을 만들 경우에는 타입을 반드시 명시해야 합니다.

형식 추론은 타입을 명시하지 않아도 되기에 제일 편합니다.

iOS 앱 개발을 할 때 우리가 항상 실행시키는 Xcode의 컴파일러(Apple LLVM/Clang)가 배열에 들어가는 값이
무엇인지 형식 추론을 하여 알아서 결정해줍니다. (아주 편리하죠?)

// 생성 방법: (let 또는 var) 배열 이름 = [배열의 타입과 일치하는 값]
 
let arr1 = [1, 2, 3, 4, 5] // 상수형 정수형 배열
var arr2 = ["일", "이", "삼", "사", "오"] // 변수형 문자열 배열

하지만!
주의해야 할 점이 있습니다.

  1. 빈 배열을 만들 때는 타입을 꼭 명시해야 하기 때문에 사용하면 안 됩니다.
let emptyArr = [] // error!
  1. 다른 타입의 값을 한꺼번에 같이 넣으면 안 됩니다.
let arr = [1, "이", 3, "사"] // error!

이런 식으로 대괄호 안에 여러 타입의 값을 같이 넣으면 에러가 발생하게 됩니다.

배열에 값 넣기 (Put Values In Array)

● 빈 배열 만들기

※ 반드시 배열의 타입을 명시해야 합니다.

빈 배열은 세 가지 형태로 만들 수 있습니다.

//let emptyArray = [] // error: 타입 명시가 돼 있지 않음. (형식 추론 X)
 
let emptyArray: [Int] = []
 
// 정식 문법 사용
let emptyArray2 = Array<Int>()
 
// 단축 문법 사용
let emptyArray3 = [Int]()

빈 배열을 만들 때는 반드시 배열의 타입을 명시해줘야 합니다.
그렇기에, 형식 추론을 사용하여 타입 명시를 생략할 수는 없습니다.

  • 형식 추론은 대괄호 사이에 있는 값을 바탕으로 추론을 하기에 값을 넣지 않는다면 에러가 발생하게 됩니다.

즉, 형식 추론이 아닌 단축 문법을 사용해야 한다는 것이죠!

● 임의의 값 넣기

※ 대입 연산자 '='의 뒤에는 대괄호 사이에 배열의 타입과 일치하는 값을 넣어줘야 합니다.

임의의 값을 넣는 데에도 여러 형태가 있습니다.

// 정식 문법
let strArray1: Array<String> = ["정식", "문법"]
 
// 단축 문법
let strArray2: [String] = ["단축", "문법"]
 
// 형식 추론
let strArray3 = ["형식", "추론"]
 
// 시퀀스
let nums = Array(1...3) // [1, 2, 3]
 
// 여러 자료형(타입)
let anyArr: [Any] = [1, 2, "three", "four"] // [1, 2, "three", "four"]

정식 문법과 단축 문법은 명시한 배열의 타입과 일치하는 값을 대괄호 사이에 넣어줍니다.
값을 구분할 때는 ' , '(콤마)를 사용하여 구분해 줍니다.

profile
iOS 개발자 공부하는 Roy

0개의 댓글