我需要在Swift 2.2中使用Stack数据结构:
以下代码用于工作,但现在我已升级到Swift 2.2,代码无法编译。错误消息是Stack不符合SequenceType协议。我怀疑协议中添加了一些新的东西,现在不需要在之前实现。
try:
import yourModule
except ImportError:
# Do installation process here
# pip install module ...
我似乎无法从SequenceType协议中弄清楚我需要实现什么,以便编译我的代码。
我喜欢Eclipse,用Java编程。如果Java接口需要实现方法,Eclipse会告诉您需要实现哪些方法,甚至可以根据请求为您编写这些方法的存根。
我正在使用Xcode 7.3.1
Swift 2.2是否具有Stack数据类型的API?或者,有人可以帮我修复我的代码,以便再次运行吗?
答案 0 :(得分:2)
public class Stack<T>: SequenceType {
public typealias Generator = StackGenerator<T>
public func generate() -> Stack.Generator {
return StackGenerator(stack: self)
}
// your push(), pop(), peek(), etc...
}
public class StackGenerator<T>: GeneratorType {
public typealias Element = T
let stack: Stack<T>
var index: Int
init(stack: Stack<T>) {
self.stack = stack
self.index = stack.count
}
public func next() -> StackGenerator.Element? {
guard index > 0 else {
return nil
}
index -= 1
return self.stack[index]
}
}
用法:
let stack = Stack<Int>()
stack.push(1)
stack.push(2)
stack.push(3)
for value in stack {
print(value)
}
让我们只希望代码转换器可以自动升级到Swift 3。