Skip to content

Latest commit

 

History

History
58 lines (48 loc) · 3.23 KB

Ch5_set1.md

File metadata and controls

58 lines (48 loc) · 3.23 KB

5_셋(Set)에 데이터 넣어두기

셋(Set)은 배열이나 딕셔너리처럼 여러 개의 데이터를 넣어둘 수 있는 자료형이다. 배열은 인덱스를 사용해 원소들을 순서대로 넣어두고 딕셔너리는 키:값 방식으로 원소들을 넣어두는데 셋은 값만을 넣어두는 일종의 자루와 같아서 순서가 없다.

셋 객체는 대괄호를 사용해 만들 수 있으며 원소의 개수는 count 속성으로 확인한다.

var food : Set<String> = ["Cheese", "Milk", "Bread"]
food.count
food.isEmpty

셋 안에 원소가 하나도 없는지는 isEmpty 속성으로 확인한다. 셋 안에 특정 원소가 들어 있는지는 contains 메소드를 사용해 확인할 수 있다. 셋 안에 사람 이름을 넣어두는 코드를 만들기 위해 다음 코드를 입력한다.

var names : Set<String> = ["소녀시대", "걸스데이", "티아라"]
print("셋 안의 이름 개수 : \(names.count)")

출력값) 셋 안의 이름 개수 : 3

names 변수는 Set 자료형으로 선언되었으며 세 개의 원소가 할당되었다. 초기 값을 할당할 때는 배열처럼 대괄호 안의 원소들을 콤마(,)로 구분해서 넣어주지만 자료형을 Set으로 선언하는 변수는 배열이 아니라 셋이 된다. 셋 안에 들어 있는 원소들의 개수를 확인하기 위해 count 속성이 사용되었다. 코드를 실행하면 셋 안의 이름 개수가 3으로 출력된다.

셋 안에 어떤 원소가 들어 있는지 확인하고 싶거나 들어 있는 원소를 삭제하고 싶다면 다음과 같이 코드를 입력한다.

if names.contains("걸스데이") {
    print("걸스데이 원소가 있음.")
    names.remove("걸스데이")
    print("삭제 후 이름 개수 : \(names.count)")
}

출력값) 걸스데이 원소가 있음.
출력값) 삭제 후 이름 개수 : 2

if 문의 조건에 contains 메소드가 사용되었다. 만약 '걸스데이'라는 원소 이름이 셋 안에 들어 있다면 중괄호 안의 코드가 실행되면서 그 이름을 remove 메소드를 호출하여 삭제한다. 코드를 실행하면 위의 출력값처럼 원소가 삭제된 후 원소 개수가 줄어든 것을 확인할 수 있다.

셋에 원소를 추가하고 싶다면 insert 메소드를 사용한다. 그리고 셋 안의 원소들을 모두 확인할 때는 배열이나 딕셔너리처럼 for ~ in 구문을 사용할 수 있다.

names.insert("애프터스쿨")
var index = 0
for name in names {
    print("원소 #\(index) -> \(name)")
    index += 1
}

출력값) 원소 #0 -> 티아라
출력값) 원소 #1 -> 소녀시대
출력값) 원소 #2 -> 애프터스쿨

names 셋에 정의되어 있는 insert 메소드를 호출하여 원소를 하나 추가했다. 그리고 for ~ in 구문을 사용해 모든 원소의 값을 출력했다. 이때 for 문 밖에 index라는 이름의 변수를 하나 선언하고 for 문 안에서 그 값을 1씩 증가시킴으로써 현재 출력하는 원소가 몇 번째 원소인지 확인할 수 있도록 했다.

Ch5_set2.md 파일로 가기

Swift Study Contents로 돌아가기