ios - 使用变异函数重构大型 Swift 结构
问题描述
我正在尝试在 Swift 中简化一个巨大的文件,但我不确定什么是最好的方法。这可能是一个非常幼稚的问题,因为我对 Swift 还是很陌生 :)
为了简单起见,假设我有一个User
结构,在其中我可以调用大量不同的setupModeA
,setupModeB
依此类推,根据不同的条件调用:
struct User {
var currentMode: String
mutating func setupModeA() {
currentMode = "A"
}
mutating func setupModeB() {
currentMode = "B"
}
// and so on for each mode
}
我希望能够将这些setupMode*()
函数及其相关的辅助函数放入一个单独的文件中,以便于阅读,因为大多数时候我只关注一种模式。
我刚在想:
struct ModeA {
mutating func setup() {
// change the mode from there
}
}
但是我不知道如何简单地将User
信息传递和变异到这个新结构。
我想过:
- 用结构中的变量初始化一堆
ModeX
对象并传递on init,但它会产生奇怪的行为。user
User
User
- 在结构上使用静态方法
ModeX
,但是我不太确定如何改变User
- 采取更实用的方法而不是改变
User
它,而是克隆它并每次重新分配它......这可能会奏效,但由于我的代码是非常连续的,所以感觉就像增加了复杂性/内存使用量。 - 从结构切换到类,并希望它给我其他选择......但我担心一切都会打破
- 非常复杂的事情,感觉太奇怪和不直观,无法在这里提及:)
任何指针将不胜感激。
解决方案
推荐阅读
- css - CSS边距编辑弄乱了移动网站
- php - 使用 PHP 上传图像并在单独的页面上显示
- angular5 - “HttpResponse”类型上不存在属性“blob”
' - php - 我如何以任何可能的方式在这里打印这个我只想在这里打印一个数字
- javascript - chai 和 sinon 测试不会失败,但应该
- ngxs - NGXS 选择器或选择器注释返回是按值传递还是引用传递?
- mysql - 如何设置 GitHub 操作以使用 mysql 数据库运行 Spring Boot 项目?
- css - React native:如何将圆形 View 的 backgroundColor 拆分为 2 种不同的颜色?
- c# - AutoMapper 使用 EF Core 持久化和继承
- arrays - 如何将 const unsigned char 数组中的元素转换为 char