Какое значение (Enum) -1 представляет в C?Как написать это в Swift? - PullRequest
0 голосов
/ 24 мая 2018

Мне нужно перевести код C на Swift, я много раз сталкивался с этим назначением переменной, но понятия не имею, какое значение оно представляет.

Имеет это перечисление в C:

typedef XX_ENUM_BEGIN(XXPosition) {
  XXTop,
  XXBottom,
} XX_ENUM_END(XXPosition);

Назначается ли переменная следующим образом:

.parentPosition = (XXPosition) -1

Это первое значение перечисления, последнее или ноль ...?

1 Ответ

0 голосов
/ 24 мая 2018

В С перечисления являются целыми числами.Макросы XX_ENUM_BEGIN и XX_ENUM_END помогают установить это так, чтобы XXTop равнялось 0, а XXBottom равнялось 1.

Поскольку перечисления C являются целыми числами, они могут фактически содержать любое значение типа int (для любогоsize int, с которой они реализованы), а не только допустимые значения enum.В этом случае код присваивает значение, которое не сопоставляется ни с чем (-1).C позволяет это, потому что (XXPosition) говорит: «Поверьте мне, я знаю, что я делаю».

Чтобы преобразовать это в Swift, вам нужно будет сделать выбор.Либо вам нужно добавить новый регистр перечисления для «none» и использовать его, либо вам нужно сделать parentPosition необязательным, чтобы оно могло быть nil.Если этот код просто устанавливает parentPosition в значение -1 в качестве значения по умолчанию (немедленно обновляя его позже до чего-то правильного), вы также можете просто установить его в значение по умолчанию (например, top) с самого начала.

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