으니의 개발로그

[Swift] 데이터 타입 고급(2-2) - 컬렉션에서 임의의 요소 추출과 뒤섞기 본문

Swift/책 정리

[Swift] 데이터 타입 고급(2-2) - 컬렉션에서 임의의 요소 추출과 뒤섞기

아잉으니야 2021. 1. 9. 21:55

[Swift] 데이터 타입 고급(2-2) - 컬렉션에서 임의의 요소 추출과 뒤섞기

이 글은 Swift 프로그래밍 책을 읽고 요약한 내용입니다.

 

스위프트 4.2 버전에서 컬렉션에서 임의의 요소를 추출하는 randomElement() 메서드와 컬렉션의 요소를 임의로 뒤섞는 shuffle() 메서드가 추가 됨. 또, 자신의 요소는 그대로 둔 채 새로운 컬렉션에 임의의 순서로 섞어서 반환하는 shuffled() 메서드도 추가됨

 

var array: [Int] = [0, 1, 2, 3, 4]
var set: Set<Int> = [0, 1, 2, 3, 4]
var dictionary: [String: Int] = ["a": 1, "b": 2, "c": 3]
var string: String = "string"

print(array.randomElement())    // 임의의 요소
/* 1 */
print(array.shuffled())     // 뒤죽박죽된 배열 - array 내부의 요소는 그대로 있음
/* [1, 4, 0, 3, 2] */
print(array)
/* [0, 1, 2, 3, 4] */
array.shuffle()     // array 자체를 뒤죽박죽으로 뒤섞기
print(array)    // 뒤죽박죽된 배열
/* [1, 4, 2, 3, 0] */

print(set.shuffled())   // 세트를 뒤섞으면 배열로 반환
/* [0, 2, 3, 4, 1] */
//set.shuffle()   // 오류 발생. 세트는 순서가 없기 때문에 스스로 뒤섞을 수 없음
print(dictionary.shuffled())    // 딕셔너리를 뒤섞으면 (키, 값)이 쌍을 이룬 튜플의 배열로 반환해줌
/* [(key: "c", value: 3), (key: "a", value: 1), (key: "b", value: 2)] */
print(string.shuffled())    // String도 컬렉션임
/* ["g", "n", "s", "i", "t", "r"] */