Skip to content

Instantly share code, notes, and snippets.

@bfernandesbfs
Last active November 11, 2016 18:57
Show Gist options
  • Save bfernandesbfs/0ace376521f93c026e859da75fe312e9 to your computer and use it in GitHub Desktop.
Save bfernandesbfs/0ace376521f93c026e859da75fe312e9 to your computer and use it in GitHub Desktop.

Revisions

  1. bfernandesbfs revised this gist Nov 11, 2016. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions protocol_hashable.swift
    Original file line number Diff line number Diff line change
    @@ -25,10 +25,10 @@ extension Person: Hashable {



    let p = [People(name: "Jack", age: 22),
    People(name: "Anne", age: 26),
    People(name: "Mary", age: 27),
    People(name: "Anne", age: 26)]
    let p = [Person(name: "Jack", age: 22),
    Person(name: "Anne", age: 26),
    Person(name: "Mary", age: 27),
    Person(name: "Anne", age: 26)]
    print(unique(p))

    p.contains(People(name: "Bruno", age: 22))
    p.contains(Person(name: "Bruno", age: 22))
  2. bfernandesbfs renamed this gist Nov 11, 2016. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. bfernandesbfs created this gist Nov 11, 2016.
    34 changes: 34 additions & 0 deletions protocol_hashable
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    func unique<S: Sequence, E: Hashable>(_ source: S) -> [E] where E==S.Iterator.Element {
    var seen: [E:Bool] = [:]
    return source.filter { seen.updateValue(true, forKey: $0) == nil }
    }

    let a = ["four","one", "two", "one", "three","four", "four"]
    print(unique(a))

    struct Person {
    var name: String
    var age: Int
    }

    extension Person: Hashable {
    var hashValue: Int {
    get {
    return name.hashValue ^ age.hashValue
    }
    }

    static func ==(l: Person, r: Person) -> Bool {
    return l.hashValue == r.hashValue
    }
    }



    let p = [People(name: "Jack", age: 22),
    People(name: "Anne", age: 26),
    People(name: "Mary", age: 27),
    People(name: "Anne", age: 26)]
    print(unique(p))

    p.contains(People(name: "Bruno", age: 22))