SWIFT構文#6の整理
ソース:アップル公式SWIFTレポート
Setは、繰り返しが許されず、順序がない値のセットです.Setデータ型は、値を格納する際にハッシュ値を使用する.したがって、ユーザが作成したカスタムデータ型をSetに保存する場合は、SWIFT標準ライブラリのハッシュプロトコルを拡張して使用する必要があります.また,これはSetだけでなくDictionary資料型のKeyに相当する.
Setの使い方はほぼArrayに似ています.しかし,Insert法では,Setが無秩序集合であるため,Indexは存在しない.
特定の値があるかどうかはcontains(:)メソッドで決定できます.
写真ソース:アップルSWIFT公式原稿
上図はSWIFTが提供するSet演算の種類です.交差、和セット、差セットなどの演算を提供します.
Set
Setは、繰り返しが許されず、順序がない値のセットです.Setデータ型は、値を格納する際にハッシュ値を使用する.したがって、ユーザが作成したカスタムデータ型をSetに保存する場合は、SWIFT標準ライブラリのハッシュプロトコルを拡張して使用する必要があります.また,これはSetだけでなくDictionary資料型のKeyに相当する.
Setの使い方はほぼArrayに似ています.しかし,Insert法では,Setが無秩序集合であるため,Indexは存在しない.
var letters = Set<Character>()
letters.insert("a")
letters = []
letters += ["b"] // Error!
要素を削除するremoveメソッドはArrayとは少し異なります.次の例です.let removedGenre = favoriteGenres.remove("Rock") // removedGenre -> String?
Setでremoveはオプション値を返します.これは、削除しようとした値がSetに存在しない可能性があるためです.したがって、removeを使用する場合は、必ず選択するかどうかを確認します.特定の値があるかどうかはcontains(:)メソッドで決定できます.
if favoriteGenres.contains("Funk") {
print("I get up on the good foot.")
}
コレクション内の値をソートする必要がある場合は、ソート(by:)メソッドを使用します.for genre in favoriteGenres.sorted(by: <) {
print(genre)
}
Set演算の実行
写真ソース:アップルSWIFT公式原稿
上図はSWIFTが提供するSet演算の種類です.交差、和セット、差セットなどの演算を提供します.
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbes: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbes).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbes).sorted()
// [1, 2, 9]
また,以下のように部分集合の有無を確認することもできる.let houseAnimals: Set = ["Dog", "Cat"]
let farmAnimals: Set = ["Cow", "Chicken", "Sheep", "Dog", "Cat"]
let cityAnimals: Set = ["Pigeon", "Rat"]
houseAnimals.isSubset(of: farmAnimals) // true
farmAnimals.isSuperset(of: houseAnimals) // true
farmAnimals.isDisjoint(with: cityAnimals) // true
Reference
この問題について(SWIFT構文#6の整理), 我々は、より多くの情報をここで見つけました https://velog.io/@rubinstory/Swift-문법-정리-6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol