当我在执行no no项时遇到错误时,我正在本文(https://www.uraimo.com/2016/01/06/10-Swift-One-Liners-To-Impress-Your-Friends/)对Xcode 9 beta 2 Swift 4进行一些练习。 6:
extension Sequence{
typealias Element = Self.Iterator.Element
func partitionBy(fu: (Element)->Bool)->([Element],[Element]){
var first=[Element]()
var second=[Element]()
for el in self {
if fu(el) {
first.append(el)
}else{
second.append(el)
}
}
return (first,second)
}
}
Xcode 9在以下几行中抛出错误:
var first=[Element]()
var second=[Element]()
完整错误如下:
error: Swift-Playground.playground:6:29: error: cannot call value of non-function type '[Self.Element.Type]'
var second=[Element]()
即使我删除了typealias并使用完整的Self.Iterator.Element
类型,错误仍然存在。
这段代码完全适用于Swift 3.我认为没有理由不应该在Swift 4上工作。如果在处理相关类型方面改变了Swift 4,有人可以帮助我吗?那么,实例化数组的替代方法是什么。
答案 0 :(得分:3)
在Swift 4中,protocol Sequence
已经定义了
associatedtype Element where Self.Element == Self.Iterator.Element
所以你可以删除
typealias Element = Self.Iterator.Element
让它编译。</ p>