Инициализация индекса в массиве - PullRequest
0 голосов
/ 05 февраля 2019

Я создаю класс с автоматической индексацией.Я написал код ниже, который работает, но содержит очень небрежный подход, который я не смог решить.Я разработал простую демонстрацию игровой площадки ниже.Я прошу это улучшить мой код и мои знания Swift.

Обратите внимание, что я создаю массив IndexPairs под названием tokenParts.Индекс добавляется в класс с помощью функции "getUniqueIdentifier ()".Как используется ниже, это работает, но я не чувствую, что использую это правильно.

Я добавляю в массив оператор «tokenParts.append (...». В этом выражении у меня есть «index: 1», потому что Swift говорит, что у меня должно быть что-то для индекса. Это назначение игнорируется,но я не могу определить, как удалить этот параметр в операторе добавления.

Я уверен, что есть лучший способ.

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   

1 Ответ

0 голосов
/ 05 февраля 2019

Просто измените вашу функцию инициализации на

init(token: String, label: String) {
    self.index = IndexPairs.getUniqueIdentifier()
    self.token = token
    self.label = label
}

Это работает для меня на детской площадке

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