티스토리 뷰

Swift

Swift3 ) Array사용해보기(1/2)

Zedd0202 2017. 7. 1. 23:49
반응형

안녕하세요! 

오늘은 Array(이하 배열)를 사용해봅시다.

ㅎㅎ배열은 유명한 언어(C, C++, Java등..)에는 다 있으니 너무너무 익숙하시겠지만, 

새로운 언어를 배울 때는 위 언어들을 다 잊어주세요 :)


Swift에서의 배열. 어떤건지 알아봅시다.






Array(배열)





● 배열의 생성


생성하는 법을 알아야 배열을 응용하든 말든 하겠죠?

Swift에서는 여러가지방법으로 배열을 선언할 수 있답니다.



1. 비어있는 배열 만들기


var empty : [Int] = []

var empty2 = [Int]()

var empty3 : Array<Int> = []


위 세가지가 비어있는 Int형 배열을 만드는 방법이에요. 꼭 Int형이 아니더라도, 넣고싶은 자료형을 넣으면 된답니다.

var empty = []는 안됩니다. 타입을 반드시 명시해줘야해요



2. 임의의 데이터가 들어가 있는 배열 만들기


var a : Array<Int>  = [1,2,3,4]

var b : [Int] = [1,2,3,4]

var c = [1,2,3,4]//타입유추

var d = Array<Int>(1...4)//[1,2,3,4]


네 가지 방법으로 만들 수 있는데요, 모두 [1,2,3,4]를 리턴합니다. 

굳이 자료형을 쓰지 않더라도, Xcode는 타입유추를 통해서 배열의 타입을 알아서 결정해줘요. 


세번째방법은 타입을 적어주지 않아도 Xcode가 알아서 유추하는구나..! 

하지만, 세번째 방법을 쓸 때 조심해야 할 점은, 

한번 Xcode가 타입을 결정하면 다른타입을 넣으려고 할 때 오류가 납니다. 

무슨소리인지 잘 모르시겠다구요? 

var someInts = [1] //타입유추 -> Int형배열이구나

someInts = [] //someInts 다시 빈배열로 초기화

someInts.append("1") //String타입을 배열에 넣으려고 -> error!

(append는 배열에 원소를 추가해주는 메소드입니다 :) 곧 배우실 거에요.)

아무튼! 이 점을 조심해야합니다. 


또한, 마지막방법으로는 한번에 여러타입을 넣으려고 하면 에러가 납니다. 타입을 정해주지 않았기 때문이죠. 


var arr = [1,2,"3","4"] //error!



그렇다면 한 배열에 여러자료형을 넣는거는 못하느냐? 

아닙니다.

Any를 사용하면, 여러가지 자료형을 한 배열로 묶을 수 있답니다.


2-1. 여러 자료형이 들어갈 수 있는 배열 만들기

var anyArr1 : [Any] = [1,2,"3","4"]

var anyArr : Array<Any> = [1,2,"3","4"]


이렇게하면, 두 방법 모두 [1,2,"3","4"]를 리턴합니다. Int형과 String이 같이 존재하는 배열이죠.

어때요ㅎㅎ신기하죠?

※ 이렇게 사용하고 싶으시다면, 반드시 [Any]라고 타입을 지정해줘야 한답니다. 



3. 크기가 정해진 배열 만들기


위의 배열 선언방법들은 크기가 정해져있지 않죠? 그럼 어떤 정해진 크기의 배열을 만들고 싶은데..

크기가 있는 배열은 Swift에서 어떻게 만드느냐!!

var threeDoubles = [Int](repeating: 0, count: 3) //[0,0,0]

var threeDoubles2 = Array(repeating: 0, count: 3) //[0,0,0]

var threeDoubles4 = [String](repeating: "A", count: 3) //["A","A","A"]

이렇게! 만들어주면 된답니다. 블로그들 찾아보니까 (count:3repeatedValue: 0) 이렇게 된 곳이 많더라구요... 바뀌었습니다! (repeating : , count : )에요XD



● 배열 수정



1. 배열에 값 추가


var a : Array<Int>  = [1,2,3,4]//[1,2,3,4]

a.append(5)//[1,2,3,4,5]

a += [6,7,8]//[1,2,3,4,5,6,7,8]


지금은 Array<int>가지고 했지만, 저기 위의 배열 선언방법에 모두 적용할 수 있어요. 

append는 원소 하나만을 추가할 수 있지만, +=연산자를 사용하면 원소 여러개를 추가할 수 있답니다.

(정확히는  append함수를 사용하고, 저렇게 원소 하나만 넣어줄려면 딱 하나만 넣어줄 수 있습니다. 하지만,

append(contentsOf : sequence)를 사용해주면 한번에 여러개를 추가할 수 있어요.)


var a : Array<Int>  = [1,2,3,4]//[1,2,3,4]

a.append(5)//[1,2,3,4,5]

a.append(contentsOf: stride(from: 5, through: 10, by: 1))

//[1,2,3,4,5,6,7,8,9,10]


우리 stride배웠었죠? 이렇게 stride함수를 이용해서 여러개를 append시킬 수 있답니다 :)


2. 배열의 값 접근 


a[1] //2

a[2] //3

a[5] = 7

print(a) //[1,2,3,4,5,7] 원래 [1,2,3,4,5,6]이었음.


익숙한 접근 방법이죠?



오늘은 간단하게 배열을 어떻게 생성하고, 접근하는지만 배웠어요 :)

다음시간엔 배열에 있는 메소드들을 더 배워보는 시간을 가질거에요 XD

반응형