XCode 7 Beta 3 - Расширение массива

Старая версия кода до XCode 7 Beta 3:

extension Array {
    func filterByIndex<S: SequenceType where S.Generator.Element == Int>(indices: S) -> [T] {
        return Array(PermutationGenerator(elements: self, indices: indices))
    }

    func find(includedElement: T -> Bool) -> Int? {
        for (idx, element) in self.enumerate() {
            if includedElement(element) {
                return idx
            }
        }
        return nil
    }

}

Новая версия кода после XCode 7 Beta 3:

extension Array {
    func filterByIndex<S: SequenceType where S.Generator.Element == Int>(indices: S) -> [Element] {
        return Array(PermutationGenerator(elements: self, indices: indices))
    }

    func find(includedElement: Element -> Bool) -> Int? {
        for (idx, element) in self.enumerate() {
            if includedElement(element) {
                return idx
            }
        }
        return nil
    }
}

Но теперь функция filterByIndex выдает мне ошибку, когда я пишу эту строку:

let names = (namesArr as! [String]).filterByIndex(dupes)

"[String]" не имеет члена с именем "filterByIndex"

Что изменилось?

1 ответ

Новая версия кода прекрасно работает для меня с:

[ "zero", "one", "two", "three", "four" ].filterByIndex([1, 3])
// result: [ "one", "three" ]

Я предполагаю, что проблема у вас в другом месте. Я изначально подозревал тип dupes (определение которого не показано) не соответствует требованиям универсальной функции, но в моих тестах сообщение об ошибке должно быть другим в этом случае.

Другие вопросы по тегам