Как сделать идентификационный номер для всего класса - PullRequest
0 голосов
/ 19 апреля 2019

Возможно, я просто читаю старый материал, но не вижу способа сделать что-то, казалось бы, очень простое.

У меня есть класс с именем Robot, каждому экземпляру которого требуется уникальный id. id - это просто Int, который должен быть равен 1,2,3 ... Нормальным решением было бы иметь класс var MaxId, который вы увеличиваете в init(), а затем назначаете его экземпляру id.

Swift (4?) Не имеет переменных класса, но имеет вычисляемые свойства на уровне класса. Тем не менее, я немного озадачен тем, как можно использовать это, чтобы сделать MaxId. Я что-то упускаю из виду ослепительно очевидного?

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

уникальный идентификатор. Идентификатор - это просто Int, который должен быть 1,2,3.

Вы, конечно, можете использовать статическое свойство и увеличивать его, но учтите, что это два разных требования. Если все, что вы действительно хотите, является уникальным идентификатором, то нет необходимости в подходе "наименее доступное целое число". Просто используйте встроенную структуру UUID и двигайтесь дальше.

1 голос
/ 19 апреля 2019

Статические переменные по сути являются переменными класса. Попробуйте это на детской площадке:

class Numbered {
    static var serial: Int = 1
    let myID: Int

    init() {
        myID = Numbered.serial
        Numbered.serial = Numbered.serial + 1
    }

}

print(Numbered().myID)
print(Numbered().myID)
...