c - (Enum) -1 在 C 中代表什么值?如何用 Swift 编写它?
问题描述
我需要将 C 代码翻译成 Swift,我多次遇到这个变量赋值,但不知道它代表什么值。
在 C 中有这个枚举:
typedef XX_ENUM_BEGIN(XXPosition) {
XXTop,
XXBottom,
} XX_ENUM_END(XXPosition);
被分配给这样的变量:
.parentPosition = (XXPosition) -1
它是第一个枚举值,最后一个还是 nil ...?
解决方案
在 C 中,枚举是整数。和宏正在帮助设置它,即XX_ENUM_BEGIN
0和1。XX_ENUM_END
XXTop
XXBottom
由于 C 枚举是整数,它们实际上可以保存任何 int 值(对于它们实现的任何大小的 int),而不仅仅是合法的枚举值。在这种情况下,代码正在分配一个不映射到任何东西的值 (-1)。C 允许这样做,因为它(XXPosition)
说“相信我,我知道我在做什么”。
要将其转换为 Swift,您需要做出选择。您需要为“none”添加一个新的枚举案例并使用它,或者您需要将其设为parentPosition
可选,以便它可以是nil
. 如果此代码只是设置parentPosition
为 -1 作为默认值(稍后立即将其更新为正确的值),您也可以top
从一开始就将其设置为默认值(如 )。
推荐阅读
- git - How to fix conflicts that occur when replaying history during git rebase?
- kubernetes-helm - 无法使用 ICP 私有镜像注册中心添加自定义应用程序
- css - 可以在 SCSS 中导入 SASS 文件吗?
- java - Android 软键盘和 panAdjust 的问题
- firebase - Gmail API - 从 Firebase 存储的 URL 发送附件
- php - 仅选择与 Laravel 相关的行
- windows - 在 Windows 注册表中创建根密钥
- sql - 当我知道记录是唯一的时查询抱怨唯一性违规
- php - 在php中根据它们的键值合并数组
- ios - 如何断开已经连接的BLE设备