这是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错误。有什么想法,为什么它以这种奇怪的方式表现?