我想给我的 STACK 结构一个函数 contains(element: Element) ,它返回一个关于 var contents 是否包含提供的元素的布尔值。
struct Stack<T>: SequenceType, Equatable, Printable, DebugPrintable {
typealias Element = T
private var contents: [Element]
var top: Int
init(arrayLiteral elements: T...) {
self.init(elements) }
// easier initialization
init<S: SequenceType where S.Generator.Element == Element>(_ sequence: S) {
self.contents = [Element]()
Swift.map(sequence) {self.contents[$0] = true }
}
// returns TRUE if the Stack contains <T> 'element'
func contains(element: Element) -> Bool {
return contents.filter(element != nil) ?? false
}
我希望能够定义一个新的堆栈并像这样搜索它的内容:
var newStack: Stack = [5, 23, 45, 100]
newStack.contains(45) // returns TRUE
目前编译器给出的错误是:
“不能调用'??' 带有类型为 '(Array, BooleanLiteralConvertible)' 的参数列表