gpt4 book ai didi

swift - 如何在 Swift 上为堆栈声明 "if optional"

转载 作者:行者123 更新时间:2023-11-30 10:22:04 25 4
gpt4 key购买 nike

我不太清楚如何使用 Swift 上的类在堆栈上声明“如果可选”。这是我在 Swift 上使用类的堆栈的通用代码(这本书使用结构,但我被告知使用类)。

class Stack {
var items = [String]()
func push(item: String) {
items.append(item)
}
func pop() -> String {
return items.removeLast()
}
func length() -> Int {
return items.count
}
}

我创建了一个 Stack 实例:

var stringStack = Stack()
...
stringStack.pop()

当我弹出时,堆栈会删除最后一个项目。我想让它这样,如果我执行 pop(0),堆栈将删除第一个项目,但如果我只执行 pop(),堆栈只会删除最后一个项目。我正在考虑使用 if ... return items.removeAtIndex(0) 或 else items.removeLast() 创建一个可选值。我似乎无法正确理解语法,并且不断收到错误。我能够做到这一点,以便 pop(0) 删除堆栈中的第一个项目,但如果我执行 pop(),则会出现错误。如果有人可以向我展示一段代码来完成我想做的事情,那将非常有帮助。我在编码方面仍然非常非常新,我知道的不多。抱歉让您尴尬了!

最佳答案

您正在寻找具有默认值可选参数。这样,您就可以调用 pop() 从堆栈中删除最后一个项目,或调用 pop(index) 删除特定项目。

使用参数调用pop意味着可选的index有一个值,因此使用第一个返回值。不带参数的调用会将 index 保留为默认值,因此 if 语句失败,您会删除最后一项。

func pop(_ index: Int? = nil) -> String {
if let i = index {
return items.removeAtIndex(i)
}

return items.removeLast()
}
// ...
stack.pop(0)
stack.pop()

关于swift - 如何在 Swift 上为堆栈声明 "if optional",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com