首先让我找一个可能缺少基本内容(和正确表达)的借口

我有一个结构,在其中存储棋盘游戏的多个值。它看起来像这样,并包含大约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/

10-09 08:03