Swift错误:无法调用非函数类型的值' [T.Iterator.Element.Type]'

时间:2017-04-20 11:00:04

标签: swift generics iterator swift-playground swift-protocols

这是swift Playgrounds的工作代码 - Generics:

func makeArray<T>(item: T, numberOfTimes: Int) -> [T] {
    var result = [T]()
    // some code here
    return result
}

注意这一行

var result = [T]()

这里工作正常。但是,在下一个具有相似想法的例子中

func anyCommonElements<T: Sequence, U: Sequence>(_ lhs: T, _ rhs: U)
        -> [T.Iterator.Element]
    where T.Iterator.Element: Equatable, T.Iterator.Element == U.Iterator.Element {
        var result = [T.Iterator.Element]()
        // some code here
        return result
}

崩溃时出现错误:

Playground execution failed: error: Generics.xcplaygroundpage:28:42: error: cannot call value of non-function type '[T.Iterator.Element.Type]'
    var result = [T.Iterator.Element]()
                 ~~~~~~~~~~~~~~~~~~~~^~

的修复方法是以这种方式创建数组:

var result: [T.Iterator.Element] = []

或者这个:

var result = Array<T.Iterator.Element>()

但是,我不明白这些例子之间的区别。我想这可能是类似于this one的Swift错误。有什么想法,为什么它以这种奇怪的方式表现?

0 个答案:

没有答案