Generics Swift要求两个泛型为同一类型

Generics Swift要求两个泛型为同一类型,generics,swift,Generics,Swift,在Swift编程语言中,我看到了一个示例 func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool { for lhsItem in lhs { for rhsItem

在Swift编程语言中,我看到了一个示例

func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool {
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                return true
            }
        }
    }
    return false
}
但不是

anyCommonElements("123", [1, 2])
但是
T:Sequence,U:Sequence
意味着参数T和U必须是序列,例如字符串或数组


使用where子句编写具有两个参数T和U的函数的正确方法是什么?省略
T:Sequence,U:Sequence
需求会导致错误“GeneratorType不是类型T的成员”

如果您希望两个参数都是相同的类型,您可以对它们使用相同的泛型。比如:

func functionName <T, T> (lhs: T, rhs: T) -> Bool {
    return false
}
func函数名(左:T,右:T)->Bool{
返回错误
}

正如@conner所指出的,但您永远不会以这种方式指定它,因为只有一种类型。这样更好:

func functionName<T> (lhs: T, rhs: T) -> Bool { ... }
func函数名(lhs:T,rhs:T)->Bool{…}

哦,我想得太多了
func functionName<T> (lhs: T, rhs: T) -> Bool { ... }