字符串类型的枚举与具有静态常量的结构

2024-04-15

似乎当需要使用枚举(字符串类型)时,也可以使用使用静态字段的结构来实现。

e.g.

enum Test: String {
  case TestCase1
  case TestCase2
  case TestCase3
}

or

struct Test {
  static let TestCase1 = "TestCase1"
  static let TestCase2 = "TestCase2"
  static let TestCase3 = "TestCase3"
}

什么时候枚举方法优于其他方法,反之亦然?


他们都是完全可行的。

我曾经认为枚举方法不太灵活,因为您必须明确询问原始值才能到达底层字符串,但我不再这么认为,因为有一些方法可以扩展 NSUserDefaults 等类来提取原始值自动地.

所以现在我更有可能遵循这个更明显的经验法则:如果这只是某些人的美化名称空间常量,具有静态成员的结构似乎最简单。枚举是针对switch,即需要以几种可能状态之一存在的东西。

但我什至没有始终如一地遵循该规则,因为具有原始值的枚举具有结构所没有的优点。例如,如果您有一个带有原始值的枚举,那么您可以非常轻松地从原始值获取相应的枚举情况(通过调用init(rawValue:))。对于结构体来说这并不是那么容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串类型的枚举与具有静态常量的结构 的相关文章

  • 如何在 Swift 中使用 CoreBluetooth 更新 BLE 设备的电池电量?

    func peripheral peripheral CBPeripheral didDiscoverCharacteristicsFor service CBService error Error for c in service cha
  • 保存来自 TrueDepth 相机的深度图像

    我正在尝试保存 iPhone X TrueDepth 相机的深度图像 使用AVCam照片滤镜 https developer apple com library content samplecode AVCamPhotoFilter Lis
  • 是否可以更改枚举中的关联值?

    我正在使用 Swift 枚举 想知道是否有一种方法可以更改枚举的关联值 例如下面的代码尝试但失败了 enum myEnum case SomeCase Int mutating func someFunc switch self case
  • 针对 iOS 10.3 进行编译,但模块“SwiftUICharts”的最低部署目标为 iOS 13.0

    知道如何仅在 iOS 版本超过 iOS 13 时导入 SwiftUICharts 框架吗 我通过 文件 gt Swift 包 gt 添加包依赖项 添加了此框架 我的应用程序目标必须是 iOS 10 我将此框架导入到 swiftui 控制器中
  • iOS Swift 和 reloadRowsAtIndexPaths 编译错误

    我与 xCode Swift 陷入僵局并刷新 UITableView 的单行 这条线有效 self tableView reloadData 而这条线没有 self tableView reloadRowsAtIndexPaths curr
  • 在 Go 中初始化嵌入结构

    我有以下内容struct其中包含一个net http Request type MyRequest struct http Request PathParams map string string 现在我想初始化匿名内部结构http Req
  • std::less 枚举

    标准是否保证std less
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • iOS 防止计时器 UILabel 在数字变化时“晃动”

    我有一个UILabel它以以下格式显示计时器的输出MM ss SS 分 秒 厘秒 但是随着厘秒宽度的变化 它从左向右 摇动 例如 11 比 33 窄 有什么办法可以减轻这种情况吗 我尝试过将其居中 给它固定的宽度 但它们似乎没有帮助 从iO
  • Swift:如何减少 didupdatelocations 调用

    我想出了一些代码来打印我所在位置的地址和邮政编码 这是在 didupdatelocation 函数中完成的 我遇到的唯一问题是 didupdatelocation 函数每秒都会更新该地址 因为这电池效率非常低 所以我一直在寻找使用间隔的方法
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • Swift Codable 将空 json 解码为 nil 或空对象

    这是我的代码 class LoginUserResponse Codable var result String var data LoginUserResponseData var mess String public class Log
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 如何防止Apple Watch进入睡眠状态?

    我们正在开发一个 Apple Watch 项目 但如果不被打扰 手表就会进入睡眠状态 有什么办法可以阻止它进入睡眠状态吗 据我所知和有关该主题的其他搜索 目前还没有api可通过编程方式启用或禁用 Apple Watch 的睡眠模式
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • 为什么 CAS(原子)操作比同步或易失性操作更快

    据我了解 synchronized关键字将本地线程缓存与主内存同步 volatile 关键字基本上总是在每次访问时从主内存中读取变量 当然 访问主内存比本地线程缓存要昂贵得多 因此这些操作的成本很高 然而 CAS 操作使用低级硬件操作 但仍
  • 有条件的 Mercurial 忽略文件

    我在 Mercurial 中有一个文件 我希望开发机器提取该文件 但我希望部署服务器不提取该文件 它具有开发机器没有的特殊模块 这是可能的 还是我应该有一个自定义的推送到服务器解决方案 而不是仅仅进行 hg pull 执行此操作的典型方法是
  • H2O R api:从网格搜索中检索最佳模型

    我正在使用h2oR 中的包 v 3 6 0 并且我构建了一个网格搜索模型 现在 我正在尝试访问最小化验证集上的 MSE 的模型 在Python中sklearn 这在使用时很容易实现RandomizedSearchCV Pseudo code
  • 如何将 Windows 桌面应用程序转换为 Mac 桌面应用程序?

    我需要将 C NET Windows 桌面应用程序转换为 Mac 我读过有关 Qt REAL Studio LiveCode RunRev wxWidgets 和 Mono 的跨平台方面的内容 www mono project com 和h
  • 如何使用 Maven 在构建时正确增强类? OpenJPA

    我在尝试着enhance 实体 类 所以我不会得到这个异常 Exception in thread main
  • CGImageRelease:[不是类型发布]:发送到已释放实例的消息

    我在代码 CGImageRelease imageToSave 的最后一行收到此错误 不是类型发布 消息发送到已释放的实例 请解释原因以及我需要使用什么来修复它 我正在使用 ARC 但我认为这不适用于 CG 对象 在测试代 码是否有效后 我
  • 地理编码器可使用两个地址

    带有 Geocoder gem 的 Rails 4 1 3 应用程序在模型上具有以下属性 t decimal origin lon precision gt 15 scale gt 10 t decimal origin lat preci
  • C# Ghostscript 包装器

    有没有人遇到过 C 中 GhostScript 的一个很好的包装器 我的具体用途是把postscript转成pdf Matthew Ephraim 创建了一个非常简单的 C 包装器 名为 GhostScriptSharp 它使用 P Inv
  • 支持异步操作并遵守超时的.NET TcpClient/NetworkStream 实现

    根据问题数量 论坛帖子等 BCL 中的 TcpClient NetworkStream 实现似乎缺乏对取消 IO 操作的适当支持 随着 NET 4 5 中添加异步方法 这种取消 或适当的超时支持 的缺乏使事情变得更加令人沮丧 因为在执行 I
  • 如何使用Python 2.7.8 |Anaconda 2.1.0(32位)加载png图像?

    我使用 Anaconda 下载 Python 2 7 我使用的是Windows 7 我尝试了以下操作 from Tkinter import Tk Frame Canvas import ImageTk t Tk t title Trans
  • 在 F# 列表中键入扩展名

    假设我有一个类型 let MyType some info 但是 它通常用于列表 MyType list 所以我可以定义 let MyTypeList MyType list 有没有办法在 MyTypeList 上定义类型增强 我的实际情况
  • 在添加较少支持期间无法在下一个 js 中设置未定义的属性“样式”

    我正在尝试使用 antd 设计向我的下一个 js 项目添加对 less 文件的支持 但无法设置未定义的属性 样式 我想自定义 antd 主题 但该错误对我来说是一个障碍 任何人有任何想法请帮助我解决这个问题 error screenshot
  • Xcode 本地化更新

    因此 我使用 Use Base Internationalization 在 Xcode 中本地化了故事板 我进去翻译了字符串文件中的所有字符串 耶 那花了很长时间 现在 我在故事板的基本文件中添加了一个新元素 它有一个标签 其中有一个我需
  • 将其他参数添加到来自 youtube 的 yt.player 对象

    我正在使用 yt player 启动 YouTube 视频 如下所示 function onYouTubeIframeAPIReady player new YT Player player height 720 width 1280 ht
  • 将光标数据放入数组中

    作为 Android 新手 我在处理以下问题时遇到困难 public String getContacts Cursor cursor getReadableDatabase rawQuery SELECT name FROM contac
  • 是否存在可以生成所有可能排列的交换序列? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 给你一个数字列表1 2 n 是否有一
  • mysql查询获取多个日期范围

    我似乎在提出查询来实现我想要的目标时遇到了一些麻烦 我有一张如下表 Date TIMESTAMP Count 2016 02 01 01 00 00 52 2016 01 05 11 30 00 14 2016 02 01 04 20 00
  • 如何加速sklearn SVR?

    我正在实施SVR http en wikipedia org wiki Support vector machine Regression using sklearn http scikit learn org stable python
  • 复选框的勾选或取消勾选事件上的Javascript?

    是否可以在勾选复选框时触发一个事件 而在未勾选复选框时触发另一个事件 目前我正在使用 booking checkboxes on change input function 但我想知道该复选框是否刚刚更改为选中状态 或者只是更改为未选中状态
  • 字符串类型的枚举与具有静态常量的结构

    似乎当需要使用枚举 字符串类型 时 也可以使用使用静态字段的结构来实现 e g enum Test String case TestCase1 case TestCase2 case TestCase3 or struct Test sta