使用泛型调用另一个参数相同但名称不同的函数会在Swift中引发错误

使用泛型调用另一个参数相同但名称不同的函数会在Swift中引发错误,swift,Swift,我试图从someMethodA调用someMethodB,但出现以下编译错误无法将表达式的类型“$T2[]”转换为类型“T[]” func someMethodA<T : Equatable>(array: T[], values: T...) -> T[] { return self.someMethodB(array, values: values) } func someMethodB<T : Equatable>(array: T[], value

我试图从someMethodA调用someMethodB,但出现以下编译错误
无法将表达式的类型“$T2[]”转换为类型“T[]”

func someMethodA<T : Equatable>(array: T[], values: T...) -> T[] {
    return self.someMethodB(array, values: values)
}

func someMethodB<T : Equatable>(array: T[], values: T...) -> T[] {
    ...
}
func-someMethodA(数组:T[],值:T…)->T[]{
返回self.someMethodB(数组,值:值)
}
func someMethodB(数组:T[],值:T…)->T[]{
...
}

似乎是可变参数造成的问题。如何将转换为数组的值作为变量传递给someMethodB?

MethodB接受一个可变的第二个参数,但您发送给它的是一个数组。您可以将MethodB的方法签名更改为:

someMethodB<T : Equatable>(array: T[], values: T[]) -> T[]{ /* code */ }

那么我的问题是如何用数组T[]传递可变参数?你不能把数组转换成可变参数。不过你可以做两个MethodB。一个接受可变参数,另一个接受数组。接受variadic参数的那个可以调用接受arrayOK的那个,所以创建一个重载参数。谢谢
func someMethodB<T : Equatable>(array: T[], values: T...) -> T[] {
    return someMethodB(array, values:values)
}