首页 > 解决方案 > (Enum) -1 在 C 中代表什么值?如何用 Swift 编写它?

问题描述

我需要将 C 代码翻译成 Swift,我多次遇到这个变量赋值,但不知道它代表什么值。

在 C 中有这个枚举:

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

被分配给这样的变量:

.parentPosition = (XXPosition) -1

它是第一个枚举值,最后一个还是 nil ...?

标签: cswiftenums

解决方案


在 C 中,枚举是整数。和宏正在帮助设置它,即XX_ENUM_BEGIN0和1。XX_ENUM_ENDXXTopXXBottom

由于 C 枚举是整数,它们实际上可以保存任何 int 值(对于它们实现的任何大小的 int),而不仅仅是合法的枚举值。在这种情况下,代码正在分配一个不映射到任何东西的值 (-1)。C 允许这样做,因为它(XXPosition)说“相信我,我知道我在做什么”。

要将其转换为 Swift,您需要做出选择。您需要为“none”添加一个新的枚举案例并使用它,或者您需要将其设为parentPosition可选,以便它可以是nil. 如果此代码只是设置parentPosition为 -1 作为默认值(稍后立即将其更新为正确的值),您也可以top从一开始就将其设置为默认值(如 )。


推荐阅读