0
내 스택에 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
}
나는 새로운 스택을 정의 할 수 그래서 같은 내용을 검색하고 싶은
:
var newStack: Stack = [5, 23, 45, 100]
newStack.contains(45) // returns TRUE
는 현재 컴파일러의 오류 제공 :
이"호출 할 수 없습니다 '를? ' 유형의 인수 목록 '(배열, BooleanLiteralConvertible)' "모든
무엇이 문제입니까? 그리고 무엇이 문제입니까? – Antonio
안토니오 - 죄송합니다. 추가하던 것을 잊어 버렸습니다 ... 하단에 추가했습니다. – Sean
초기화 프로그램에 대한 문제가 있습니다. 빈 배열로 시작한 다음 들어오는 형식의 시퀀스를 해당 배열의 인덱스로 사용하려고합니까? Element를 숫자 형으로 제한하지 않았다면 작동하지 않는 것처럼 보입니다. 또한 빈 배열의 끝에서 즉시 벗어나 예외가 발생합니다. –