首先让我找一个可能缺少基本内容(和正确表达)的借口
我有一个结构,在其中存储棋盘游戏的多个值。它看起来像这样,并包含大约20个值。
struct Werte {
static var geld: [Int] = [] {didSet {NotificationCenter.default.post(name: .ResourcenAnzeigen, object: nil, userInfo: ["which" : 0])}}
static var erz: [Int] = [] {didSet {NotificationCenter.default.post(name: .ResourcenAnzeigen, object: nil, userInfo: ["which" : 1])}}
static var temperatur = Int() {didSet {NotificationCenter.default.post(name: .TemperaturAnzeigen, object: nil)}}
}
有几个这样的类:
class KarteBlauVerbraucheErhalte {
let use: //what should I declare
let useHowMuch: Int
init(use: /*what should I declare*/ , useHowMuch: Int) {
self.use = use
self.useHowMuch = useHowMuch
}
override func Aktion() {
use += useHowMuch
}
如果我用
use
声明Int
并使用init(use: Geld[0] , useHowMuch: 99)
,则代码有效-但只有类变量use
增加了99。Geld[0]
不变。如何更改
Geld[0]
? 最佳答案
一种方法是:
var use: Int {
get {
return Werte.geld[0]
}
set {
// You have access to the newValue by property name 'newValue'.
// Use it. E.g.:
Werte.geld[0] += newValue
}
}
在构造函数中忽略它,因为它没有意义,我也不认为它可以编译。
代码为什么不起作用的背景:您指的是
geld[0]
,它只是一个Int
。它只是传递实际值,而不是引用。但这是另一个主题。关于swift - 通过变量快速访问结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53316135/