Xcode7拋出:Swift2:爲什麼這個Dictionary擴展沒有編譯?
Cannot subscript a value of type 'Dictionary<Key,Value>' with an index of type 'T'
缺少什麼我在這裏?
extension Dictionary where Key: StringLiteralConvertible, Value: AnyObject {
func boolOr<T:StringLiteralConvertible>(fall: Bool, key: T) -> Bool {
return (self[key] as? Bool) ?? fall
}
}
試圖使其成爲String
也不會在boolOr()
工作(我得到同樣的錯誤與String
代替T
)
let s = "\(key)"
return self[s] as? Bool ?? fall
如果你宣佈你的'extension'與像'鍵約束:StringLiteralConvertible',在你的方法'''聲明對我來說看起來是多餘的,因爲'Key'類型已經滿足了。 –
我同意,但比什麼類型應該'鍵'?簡單地刪除T'的''來構StringLiteralConvertible'沒有幫助,也不做使得'key'明確'String' –
你可以聲明其爲'Key' –