STACK 構造体に、提供された要素が var コンテンツに含まれているかどうかについて bool を返す関数 contains(element: Element) を指定したいと思います。
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
}
新しい STACK を定義し、その内容を次のように検索できるようにしたいと考えています。
var newStack: Stack = [5, 23, 45, 100]
newStack.contains(45) // returns TRUE
現在、コンパイラは次のエラーを出します:
「「??」を呼び出せません '(Array, BooleanLiteralConvertible)' 型の引数リストを持つ "