W Swift języka programowania widzę przykładSwift wymagać, że dwa leki generyczne są tego samego typu
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
}
Wydaje się, że T.GeneratorType.Element == U.GeneratorType.Element
oznacza, że elementy generowane kiedy sekwencje są rozkładane akcji ten sam typ bazowy. Więc mogę zrobić
anyCommonElements("123", "1234")
anyCommonElements([1, 2, 3], [1])
ale nie
anyCommonElements("123", [1, 2])
Ale T: Sequence, U: Sequence
oznacza, że parametry tiu być sekwencje, takie jak String lub tablicą.
Jaki jest właściwy sposób napisania funkcji, która pobiera dwa parametry T i U, które muszą być tego samego typu za pomocą klauzuli where? Pominięcie wymogu T: Sequence, U: Sequence
powoduje błąd "GeneratorType nie jest członkiem typu T"
Oh duh, ja się przeliczyłem, że jeden – JuJoDi