泛型 – 对泛型扩展的快速类型约束
发布时间:2020-12-14 04:25:21 所属栏目:百科 来源:网络整理
导读:经过一些压力后,我创建了以下通用函数: func removeDupesT : Hashable (inout inputCollection : [T] ) - [T] { var hashMap = [T : Bool]() var output = 0 for thing in inputCollection { if !hashMap[thing] { hashMap[thing] = true inputCollection[o
经过一些压力后,我创建了以下通用函数:
func removeDupes<T : Hashable > (inout inputCollection : [T] ) -> [T] { var hashMap = [T : Bool]() var output = 0 for thing in inputCollection { if !hashMap[thing] { hashMap[thing] = true inputCollection[output++] = thing } } while (inputCollection.count > output) { inputCollection.removeLast() } return inputCollection } 所以当你这样做时: var names = ["Bob","Carol","Bob","Ted","Alice","Alice"] removeDupes(&names) 名称将包含:[“Bob”,“Carol”,“Ted”,“Alice”] 现在我想在Array上添加“removeDupes”作为扩展方法,我正在用语法进行挣扎,因为我必须将它限制为Hashable项的数组. 我希望我可以这样声明: extension Array { func removeDupes< T : Hashable> () -> [T] { return removeDupes(&self) } } 但我得到错误: 数组不能转换为’@lvalue inout $T5′ 我怀疑答案是“你这个白痴,做这个……”还是“你做不到” 它会是哪个? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |