我是Swift和iOS编程的新手。
我试图测试出一个简单的算法,需要一个堆栈数组。不需要任何花哨(堆栈的整数将做)。
我从Swift编程语言文档中获得了Stack实现:
struct IntStack {
var items = [Int]()
mutating func push(item: Int) {
items.append(item)
}
mutating func pop() -> Int {
return items.removeLast()
}
mutating func count() -> Int {
return items.count
}
mutating func show() {
println(items)
}
}
count和show函数是我的贡献。但是当我试图声明一个堆栈数组时,我得到了一个错误...
var lines = IntStack()[5]
"IntStack"没有名为subscript的成员
我猜这与可选的东西,但可以找出它是什么。
有人帮忙吗?
7条答案
按热度按时间ejk8hzay1#
详情
通用堆栈实现
可堆叠协议
堆栈
用法
bf1o4zei2#
你在这里做的事情没有问题--这不是声明一个数组的语法。如果你想要一个5栈的数组,你可以这样做:
或者,您可以像这样初始化数组:
此外,除非函数实际上改变了结构,否则不需要将函数标记为
mutating
-因此count()
和show()
不需要。xwmevbvl3#
有可能只使用堆栈特定的方法来扩展数组。这可能是你想要的,也可能不是,这取决于你是否想禁止类似数组的访问。
简单测试用例:
lnxxn5zx4#
初始化时不需要声明堆栈的大小。调用它就足够了。
还要注意,count()和show()方法不应该改变,因为它们不会以任何方式修改结构体。
atmip9wb5#
只要看看这个代码。栈例子与泛型数据类型和不使用数组。
qxsslcnc6#
出色的执行!一个想法:我想应该是:
sd2nnvve7#
这是一个使用Swift泛型的Stack实现,
完整代码如下:
https://reactcodes.blogspot.com/2019/01/generic-stack-implementation-with.html