gpt4 book ai didi

arrays - symmetricDifference 的通用数组扩展

转载 作者:行者123 更新时间:2023-11-28 06:25:58 25 4
gpt4 key购买 nike

我编写此函数是为了获取两个字符串数组之间的差异。

func difference<T:Hashable>(array1: [T] ,array2:[T]) ->[T]? {
let set1 = Set<T>(array1)
let set2 = Set<T>(array2)
let intersection = set1.symmetricDifference(set2)
return Array(intersection)
}

现在我想将它扩展为不同类型的通用函数,例如 IntDouble 等...

extension  Array where Element: Hashable {
func difference<T:Hashable>(array2: [T]) -> [T] {
let set1 = Set(self)
let set2 = Set(array2)
let intersection = set1.symmetricDifference(set2)
return Array(intersection)
}
}

有了这个扩展,我得到了错误:

Generic parameter 'S' could not be inferred.

我尝试了不同的方法,但都是徒劳的。可能是什么问题?

最佳答案

正如@Hamish 在他上面的评论中提到的那样,您正在使用一种类型扩展 Array 并尝试使用另一种类型执行 symmetricDifference ( T: Hashable) 编译器无法推断。

您可以修复它返回一个 [Element] 并在函数中使用与参数相同的类型,如下所示:

extension Array where Element: Hashable {

func difference(array2: [Element]) -> [Element] {
let set1 = Set(self)
let set2 = Set(array2)
let intersection = set1.symmetricDifference(set2)
return Array(intersection)
}
}

希望对你有帮助

关于arrays - symmetricDifference 的通用数组扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41884812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com