swift - 初始化数组中的索引
问题描述
我正在创建一个具有自动索引的类。我在下面编写了有效的代码,但包含一个我无法解决的非常草率的方法。我在下面设计了一个简单的游乐场演示。我要求这样做来改进我的代码和我对 Swift 的了解。
请注意,我正在创建一个名为 tokenParts 的 IndexPairs 数组。索引通过函数“getUniqueIdentifier()”添加到类中。如下所示,它可以工作,但我觉得我没有正确使用它。
我用语句“tokenParts.append(...”添加到数组中在 append 语句中删除此参数。
我确信有更好的方法。
class IndexPairs
{
var index: Int
var token: String
var label: String
private static var identifierFactory = -1
private static func getUniqueIdentifier() -> Int {
identifierFactory += 1
return identifierFactory
}
init(index: Int, token: String, label: String) {
self.index = IndexPairs.getUniqueIdentifier()
self.token = token
self.label = label
}
}
var tokenParts: [IndexPairs] = []
for i in 0...4 {
tokenParts.append(IndexPairs( index: 1, token : "token"+String(i), label: "label"+String(i))) //index: 1 -- works
}
for i in 0...4 {
print("\(tokenParts[i].index) \(tokenParts[i].token) \(tokenParts[i].label)")
}
打印循环显示以下内容,因此它正在工作。打印:
0 token0 label0
1 token1 label1
2 token2 label2
3 token3 label3
4 token4 label4
解决方案
只需将您的初始化函数更改为
init(token: String, label: String) {
self.index = IndexPairs.getUniqueIdentifier()
self.token = token
self.label = label
}
这在操场上对我有用
推荐阅读
- flutter - DropdownButtonFormField 不是第一次重置
- azure-keyvault - 在 Azure Key Vault 上管理对凭据的细粒度访问
- java - JavaFX - 如何选择一种形状来制作动画?
- matlab - 对向量中的每 n 个元素执行平均操作
- python - Jupyterlabs Notebook和命令行Python有不同的系统路径?
- azure - 如何将 .NET Core 3.x 与 Azure Function App Powershell Runtime 一起使用?
- git - 快捷方式 git 分支结帐
- javascript - 在for循环react js中进行单独的条件渲染
- python - 如何从 PyQt 的 QWebEnginePage.runJavaScript() 中获取返回值
- apache-flink - 通过 jackson JavaTimeModule 支持 java.time.Instant serde