Skip to content

Instantly share code, notes, and snippets.

@JaviSoto
Created June 8, 2014 22:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JaviSoto/1243db46afe5132034e2 to your computer and use it in GitHub Desktop.
Save JaviSoto/1243db46afe5132034e2 to your computer and use it in GitHub Desktop.
Swift Set Type
struct Set<T: AnyObject> : Printable {
typealias ElementType = (T: AnyObject)
var set: NSMutableSet
init() {
self.init(array: [] )
}
init(array: ElementType[]) {
self.set = NSMutableSet(set: NSSet(objects: array))
}
init(object: ElementType) {
self.init(array: [object])
}
var objects: ElementType[] {
get { return self.set.allObjects }
}
var count: Int {
get { return self.set.count }
}
func setByAdding(object: ElementType) -> Set<T> {
var objects = self.objects
objects.append(object)
return Set(array: objects)
}
}
extension Set {
mutating func add(object: ElementType) {
self.set.addObject(object)
}
mutating func remove(object: ElementType) {
self.set.removeObject(object)
}
mutating func removeAll() {
self.set.removeAllObjects()
}
}
extension Set : Printable {
var description: String {
get {
return self.objects.description
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment