Я пытаюсь выполнить упражнение на странице 46 новой книги Apple "Язык быстрого языка". Он дает следующий код:
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([1, 2, 3], [3])
Упражнение состоит в том, чтобы изменить функцию так, чтобы все элементы, которые были возвращены обеим последовательностям. Для этого я попытался использовать следующий код:
func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> T.GeneratorType[] {
var toReturn = T.GeneratorType[]()
for lhsItem in lhs {
for rhsItem in rhs {
if lhsItem == rhsItem {
toReturn.append(lhsItem)
}
}
}
return toReturn
}
anyCommonElements([1, 2, 3], [3])
Но в строке 2 я получаю ошибку: не удалось найти член "нижний индекс"
В чем причина этой ошибки и наилучшее решение этой проблемы?