Быстрый доступ к структуре по переменной - PullRequest
0 голосов
/ 15 ноября 2018

Позвольте мне сначала извиниться за то, что, возможно, упустил что-то простое (и правильное выражение)

У меня есть структура, в которой я храню несколько значений для настольной игры. Это выглядит так и включает в себя около 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] изменение?

1 Ответ

0 голосов
/ 15 ноября 2018

Одним из способов является это:

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. Он просто передает фактическое значение , а не ссылка . Но это совсем другая тема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...