【发布时间】:2018-02-01 16:49:35
【问题描述】:
随着我接受 Swift 教育,是时候寻求有关最佳实践和代码优化方面的帮助了。
我的应用每天都变得越来越复杂,目前的情况如下:我开始使用字典和参数来使用单个函数,可以根据情况处理很多不同的变量,这似乎更好练习而不是使用 5 个不同的函数,这些函数只对不同的变量做同样的事情。
我现在有两个文件如下:
Main1.swift:
class Main1 {
static var value1 : Int = 1
func updateValue(_ value: String) {
let dict : [String : Int] = ["value1": Main1.value1]
let dict1 = dict[value]
guard var value = dict1 else { return }
value = value + 1 // <- trying to update `static var value1`'s value from 1 to 2 here
print(value)
}
}
Main2.swift:
class Main2 {
func updateValue(_ value: String) {
let dict : [String : Int] = ["value1": Main1.value1] // <- thinking `value1` would now be 2
let dict1 = dict[value]
guard var value = dict1 else { return }
value = value + 1 // <- trying to get 3 here
print(value)
}
}
这些类是我的代码的简化版本,但逻辑是相同的:我正在尝试使用从字典加载的变量并更新它们的值以在另一个文件和函数中使用:
Main1().updateValue("value1") //2
Main2().updateValue("value1") //2 <--- I need 3 here!
-> 我到底想在这里实现什么?
更新引用 (static var value1 : Int = 1) 值,同时通过方便的字典访问它(或不同的方法,但你明白了方便的意义)。
事实上,我在通过字典访问 Main1.value1 时尝试做Main1.value1 = Main1.value1 + 1,这是不可能的,因为我没有在此处访问参考。
我知道这行不通,我在这里有 3 个不同的 value 副本,但我不知道如何在不使用另一个全局变量的情况下更新变量值...我需要你的帮助来找到更好的逻辑。
我愿意接受任何建议或想法。我不是要求代码解决方案(无论如何都会很棒),但我希望我的教育重新集中一点,我开始迷失自己的学习,而挫败感来自于我没有知道要寻找什么了。
【问题讨论】:
-
这听起来像是 XY 问题。你到底想做什么?
-
我正在尝试在函数中使用一些变量,更新它们(更改它们的值),然后将它们的更新值用于另一个函数中的其他计算(位于另一个文件和类中)。这两个函数都将这些变量作为参数。
-
不要说“函数”和“变量”,而是尝试更多地说明它们是什么,除非您正在开发的内容是机密的。此外,您当前的代码对我来说意义不大。试着解释一下。
-
不能直接改
Main1.value1吗? -
你的意思是不使用字典?我的示例是逻辑的简化版本,但我的真实函数在多个字典中有 +10 个变量,我需要能够避免使用单个
static var variables并让所有内容都通过函数中的单个对象进行传输。也许上传我的实际代码会更有意义,但我害怕让所有人震惊
标签: swift variables dictionary logic