Swift Language
세트
수색…
선언 세트
집합은 고유 한 값의 정렬되지 않은 모음입니다. 고유 값은 동일한 유형이어야합니다.
var colors = Set<String>()
배열 리터럴 구문을 사용하여 값이있는 집합을 선언 할 수 있습니다.
var favoriteColors: Set<String> = ["Red", "Blue", "Green", "Blue"]
// {"Blue", "Green", "Red"}
세트의 값 수정하기
var favoriteColors: Set = ["Red", "Blue", "Green"]
//favoriteColors = {"Blue", "Green", "Red"}
insert(_:)
메서드를 사용하여 새 항목을 집합에 추가 할 수 있습니다.
favoriteColors.insert("Orange")
//favoriteColors = {"Red", "Green", "Orange", "Blue"}
remove(_:)
메소드를 사용하여 세트에서 항목을 제거 할 수 있습니다. 그것은 제거 된 값을 포함하는 선택적 값을 반환하거나 값이 집합에 없으면 nil을 반환합니다.
let removedColor = favoriteColors.remove("Red")
//favoriteColors = {"Green", "Orange", "Blue"}
// removedColor = Optional("Red")
let anotherRemovedColor = favoriteColors.remove("Black")
// anotherRemovedColor = nil
집합에 값이 들어 있는지 확인하기
var favoriteColors: Set = ["Red", "Blue", "Green"]
//favoriteColors = {"Blue", "Green", "Red"}
contains(_:)
메소드를 사용하여 세트에 값이 들어 있는지 확인할 수 있습니다. 집합에 해당 값이 포함되어 있으면 true를 반환합니다.
if favoriteColors.contains("Blue") {
print("Who doesn't like blue!")
}
// Prints "Who doesn't like blue!"
세트에서 작업 수행
두 세트의 공통 값 :
intersect(_:)
메소드를 사용하여 두 세트에 공통 인 모든 값을 포함하는 새 세트를 작성할 수 있습니다.
let favoriteColors: Set = ["Red", "Blue", "Green"]
let newColors: Set = ["Purple", "Orange", "Green"]
let intersect = favoriteColors.intersect(newColors) // a AND b
// intersect = {"Green"}
각 집합의 모든 값 :
union(_:)
메소드를 사용하여 각 세트의 모든 고유 값을 포함하는 새 세트를 작성할 수 있습니다.
let union = favoriteColors.union(newColors) // a OR b
// union = {"Red", "Purple", "Green", "Orange", "Blue"}
"녹색"값이 새 세트에 한 번만 나타나는 방식에 유의하십시오.
두 세트에 존재하지 않는 값 :
exclusiveOr(_:)
메소드를 사용하여 두 세트 중 하나의 세트 만 고유 값을 포함하는 새 세트를 작성할 수 있습니다.
let exclusiveOr = favoriteColors.exclusiveOr(newColors) // a XOR b
// exclusiveOr = {"Red", "Purple", "Orange", "Blue"}
"녹색"값이 새 세트에 표시되지 않는 이유는 두 세트에 모두 있었기 때문입니다.
집합에 포함되지 않은 값 :
subtract(_:)
메소드를 사용하여 특정 세트에없는 값을 포함하는 새 세트를 작성할 수 있습니다.
let subtract = favoriteColors.subtract(newColors) // a - (a AND b)
// subtract = {"Blue", "Red"}
"녹색"값이 두 번째 세트에도 있었으므로 새 세트에 값이 표시되지 않는지 확인하십시오.
내 자신의 유형 값을 집합에 추가하기
자신의 타입의 Set
를 정의하기 위해서는 타입을 Hashable
일치시킬 필요가 있습니다.
struct Starship: Hashable {
let name: String
var hashValue: Int { return name.hashValue }
}
func ==(left:Starship, right: Starship) -> Bool {
return left.name == right.name
}
이제 Starship(s)
Set
Starship(s)
Set
of Starship(s)
만들 수 있습니다.
let ships : Set<Starship> = [Starship(name:"Enterprise D"), Starship(name:"Voyager"), Starship(name:"Defiant") ]
CountedSet
Swift 3은 CountedSet
클래스를 소개합니다 ( NSCountedSet
Objective-C 클래스의 Swift 버전).
CountedSet은 이름에서 알 수 있듯이 값의 수를 추적합니다.
let countedSet = CountedSet()
countedSet.add(1)
countedSet.add(1)
countedSet.add(1)
countedSet.add(2)
countedSet.count(for: 1) // 3
countedSet.count(for: 2) // 1