Я хотел найти некоторые объекты рядом с другим объектом в массиве. Я думал, что смогу написать такой метод расширения, но получаю эту ошибку:
// Error: Cannot invoke 'advanceBy' with an argument list of type '(Int)'
Тип Int
явно неверен, но метод indexOf
принимает аргумент Self.Distance
, и я не уверен, как использовать его в качестве типа параметра.
extension CollectionType where Generator.Element : Equatable {
func objectNear(object: Self.Generator.Element, indexModifier: Int) -> Self.Generator.Element? {
if let index = self.indexOf(object) {
let newIndex = index.advancedBy(indexModifier) // this doesn't work
//let newIndex = index.advancedBy(1) // but this this works
if self.indices.contains(newIndex) {
return self[newIndex]
}
}
return nil
}
}
(Если есть более быстрый подход, я был бы рад его услышать, но в любом случае я хотел бы понять вышеизложенное.)