我试图在Swift
中实现Stack结构并使其符合Generator
和Sequence
。从Swift扩展中访问存储的结构属性
class Stack<T> {
var items:Array<T>
var depth : Int{ return items.count}
init(){
items = Array<T>()
}
func push(elm:T){
items += elm
}
func pop()->T?{
if depth > 0{
return items.removeLast()
}else{
return nil
}
}
}
当试图使其符合Generator
时,我遇到了麻烦。我试图通过扩展添加一个嵌套的类型,当我得到一个错误这就是:
extension Stack{
struct StackGenerator: Generator{
var current = 0
mutating func next() -> T?{
let rc = items[current] // Get an error here: can't access items in Stack
}
}
}
编译器不会让我内StackGenerator
访问Stack.items
物业形态。这是预期的吗?我该如何解决这个问题?
和Xcode 6 GM,你有来取代'项目+ = elm':'项目+ = [榆]'。 – 2014-09-12 14:03:05