В С перечисления являются целыми числами.Макросы 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
) с самого начала.