[Swift] Enum 好用, Enum 可以更易用

[Swift] Enum 好用, Enum 可以更易用,第1张

概述Swift 中的枚举可以说好用到让我惊讶. 但是我可以让它更易用. 经典用例 比如 用它来封装 应用 微信的 Tab 栏枚举,如下: enum AppTab{ case wechat,contacts,discover,me} 到这里已经比用整型常量好很多了. 好了,现在你想将 UITabBarItem 中的构造封装在里面. 首先我们为其添加一个 title 属性,如下: extensi

Swift 中的枚举可以说好用到让我惊讶. 但是我可以让它更易用.

经典用例

比如 用它来封装 应用 微信的 Tab 栏枚举,如下:

enum AppTab{    case wechat,contacts,discover,me}

到这里已经比用整型常量好很多了. 好了,现在你想将 UITabbarItem 中的构造封装在里面.

首先我们为其添加一个 Title 属性,如下:
extension AppTab{  var Title:String{    switch self {    case .wechat: return "微信"    case .contacts: return "通讯录"    case .discover: return "发现"    case .me: return "我"    }  }}

然后.就可以直接使用 .Title 就可以访问了. 避免了 使用字典保存映射的麻烦. 写法,修改也简单.

你想判断某一个 AppTab 值是不是 me. 你选择这样做 if tab == .wechat 嗯,Swift 中可以直接写 .wechat 这样的枚举值真方便. 但是你也可以这样. 添加一个 Bool 类型的 Computed Property.
extension AppTab{  var isWechat:Bool{ return self == .wechat }}

然后你想为所有的枚举值都加上这样的 Computed Property. 你复制粘贴然后修改.

很多时候,你想遍历枚举值,于是你添加了一个静态属性.保存所以的枚举值为一个数组. 如下:
extension AppTab{  static let allCases:[ AppTab] = [.wechat,.contacts,.discover,.me]}
动起来

so far,so good. 那我可以帮到你什么呢? 我可以帮你少写代码. 怎么帮?

只需要写少量的几行声明:

如下.

AppTabwechat:微信contacts: 通讯录discover:发现me:我

选中,右键,选择 "Services|generate_enum" 然后如下代码就自动生成了:

//AppTab//wechat:微信//contacts: 通讯录//discover:发现//me:我enum AppTab  {     case wechat,me    var isWechat:Bool{ return self == .wechat }    var isContacts:Bool{ return self == .contacts }    var isdiscover:Bool{ return self == .discover }    var isMe:Bool{  return self == .me }    var Title:String{        switch self{        case .wechat:return "微信"        case .contacts:return " 通讯录"        case .discover:return "发现"        case .me:return "我"        }    }    static let allCases:[AppTab] = [.wechat,.me]}

怎么样? 来试试吧! 当然还有其他选项可以使用. 如果你有其他需要麻烦告诉我. 当然有 PR 最好了.

最后来张动图感受一下:

代码在:

OSC Git

Github

总结

以上是内存溢出为你收集整理的[Swift] Enum 好用, Enum 可以更易用全部内容,希望文章能够帮你解决[Swift] Enum 好用, Enum 可以更易用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存