gpt4 book ai didi

Swift 运算符 `subscript` []

转载 作者:IT王子 更新时间:2023-10-29 05:13:02 26 4
gpt4 key购买 nike

我是 Swift 的初学者,对运算符没有任何高级知识。

我有以下类(class)

class Container {
var list: [Any] = [];
}

我想实现运算符 subscript [] 以访问 list 中的数据。

我需要这样的东西:

var data: Container = Container()
var value = data[5]
// also
data[5] = 5

我也想写这样的东西:

data[1][2]

Container 中的元素1 是否是一个数组

感谢您的帮助。

最佳答案

这里好像有2个问题。

1。如何在我自己的自定义类上启用订阅

要在您的类 Container 上启用subscripting,您需要像这样实现 subscript 计算属性。

class Container {
private var list : [Any] = [] // I made this private

subscript(index:Int) -> Any {
get {
return list[index]
}
set(newElm) {
list.insert(newElm, atIndex: index)
}
}
}

现在你可以这样使用了。

var container = Container()
container[0] = "Star Trek"
container[1] = "Star Trek TNG"
container[2] = "Star Trek DS9"
container[3] = "Star Trek VOY"

container[1] // "Star Trek TNG"

2。我可以访问 Container 的一个元素,该元素支持下标编写类似 data[1][2] 的内容吗?

如果我们使用您的示例,不,您不能。因为 data[1] 返回类型为 Any 的内容。而且你不能下标 Any

但是如果你添加一个 Actor 就成为可能

var container = Container()
container[0] = ["Enterprise", "Defiant", "Voyager"]
(container[0] as! [String])[2] // > "Voyager"

关于Swift 运算符 `subscript` [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950138/

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