0

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”的成员

有什么改变?

4

1 回答 1

0

新版本的代码对我来说很好用:

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

我假设您遇到的问题在其他地方。我最初怀疑的类型dupes(其定义未显示)与通用函数的要求不匹配,但在我的测试中,错误消息在这种情况下应该是不同的。

于 2015-07-11T01:13:20.417 回答