5
我試圖創建一個集從數組中使元素唯一。 我認爲這將是一個優雅的方法來使用Set初始值設定器來完成這項工作。所以我創建了一個數組,並嘗試使用該數組初始化我的新集合。 但編譯器在抱怨。我使用整數值來嘗試它,它像一個魅力。但是用我自己的課,它不起作用。我也認爲Equatable Protocol
是正確的路要走..但如你所見,它不能解決我的問題。在Swift中創建一個數組集
考慮以下游樂場:
import UIKit
internal struct Object: Equatable {
var a: Int
}
internal func == (lhs:Object,rhs: Object) -> Bool {
return lhs.a == rhs.a
}
let array = [Object(a:1),Object(a:1),Object(a:1),Object(a:1),Object(a:2)]
let set = Set(array) // ERROR
編譯器與抱怨
不能調用初始化設置< _>類型的自變量[對象]
哪個協議我是否需要實施以使事情發揮作用?
'Object'必須符合'Hashable',不只是'Equatable'。 –
可能的重複[減少數組在Swift中設置](http://stackoverflow.com/questions/34161786/reduce-array-to-set-in-swift) – EmilioPelaez
它不是重複的,我明確地詢問我需要實現的一種協議。引用的Thread沒有提到關於Hashable協議的內容,並且包含使用reduce的構造,這可能導致開發人員陷入錯誤的解決方案。這篇文章更精確,不應該被標記爲重複,以幫助其他堆棧溢出用戶更快找到問題的解決方案。 –