티스토리 뷰

Swift

Swift ) Set : insert와 update의 차이

Zedd0202 2017. 9. 5. 22:18
반응형

안녕하세요 :) Zedd입니다.

저는 제 글을 굉장히....많이 읽는 편인데요..ㅎㅎ

오늘 제가 쓴 <Collection - Set사용해보기>글을 읽다가...

궁금한 점이 생겨서 이렇게 글을 쓰게 되었어요!


위 글의 3번에 보시면,


var emptySet1 : Set = ["hello","world","zedd"]

emptySet1.insert("iOS")

print(emptySet1)//["hello","world","zedd","iOS"]

emptySet1.insert("hello")

print(emptySet1)//["hello","world","zedd","iOS]

//Set 중복된 값을 허용하지 않기때문에 hello 넣어도 이미 hello 있기 때문에 변화가 없다.

emptySet1.update(with: "swift")

print(emptySet1)//["hello","world","zedd","iOS", "swift"]

//다시한번 말씀드리지만, 출력 저렇게 순서대로 안나옵니다..그냥 메소드를 어떻게 쓰는지에만 집중해주세요 :)


Set에 값을 추가하는 방법이 나오는데, 여기서 insert와 update가 보이시나요? 

둘다 Set에 값을 추가해주는 메소드죠.

근데 이 둘의..차이가..급..궁금해져서..왜 저거 쓸 땐 몰랐지??!...

아무튼 set에서의 insert, update 이 둘의 차이점을 알아볼게요 :)



Set : insert와 update의 차이



insert

- 지정된 요소(넣을 값)가 없으면 Set에 넣습니다.

- 지정된 요소(넣을 값)가  이미 Set에 있으면 insert는 아무 소용이 없습니다. 


예를 들어볼까요? 

그 전에, insert의 원형을 볼게요.



리턴타입을 봐주세요.  Bool값과 우리가 넣어준 값. Element를 리턴하는 것을 볼 수 있습니다.

Bool값은 성공적으로 넣어졌으면 True를, 아니라면 false를 리턴해요

var emptySet1 : Set = ["hello","world","zedd"]

emptySet1.insert("iOS")

//(inserted true, memberAfterInsert "iOS")


현재 emptySet1에 "iOS"가 없으므로 성공적으로 값이 넣어졌다고 True가 반환된 것을 볼 수 있습니다. 

위에서 넣을 값이 이미 Set에 있으면 insert는 아무 소용이 없습니다. 라고 그랬죠?

한번 볼까요? 


var emptySet1 : Set = ["hello","world","zedd"]

emptySet1.insert("hello")

//(inserted false, memberAfterInsert "hello")

emptySet1에 "hello"가 이미 있으므로 insert에 실패한 것을 볼 수 있어요.



다음으로 update를 보겠습니다. 



update

- 지정된 요소(넣을 값)를 무조건 삽입합니다.

- 지정된 요소(넣을 값)가 이미 Set에 있다면, 새로 넣는 값이 기존의 값을 대체합니다.



다음 특징을 말하기 전에, update의 원형을 볼게요.



insert와 다르게 반환타입이 Optional입니다. Element?가 의미하는 바는, 

내가 넣을 값(newMember)으로 넣은 Element가 리턴될 수도 있고, nil이 리턴될 수도 있다는 의미죠?


맞습니다. 내가 넣을 값(newMember)이 Set에 없다면 nil을, 있다면 해당 원소를 반환합니다.

예제를 볼까요?


var emptySet1 : Set = ["hello","world","zedd"]

emptySet1.update(with: "swift")//Prints "nil"

emptySet1.update(with: "swift")//Prints Optional("swift") 이미 emptySet1에 있으므로.


짠~


어떤가요? 이런..소소한..차이가 있는게 신기하네요. 왜...이렇게..두개로..나눈건지...모르겠지만...

아무튼 insert와 update의 차이점을 알아보았습니다!!

도움이 되었으면 좋겠네요 :)

반응형

'Swift' 카테고리의 다른 글

Swift ) 랜덤함수 차이  (0) 2017.09.11
Swift ) Any와 AnyObject의 차이  (1) 2017.09.10
Swift ) String에서 특정 문자 제거  (0) 2017.09.02
Swift3 ) 나누기가 안될 때  (2) 2017.08.18
Swift3 ) Array. count? capacity?  (4) 2017.08.17