美文网首页
396,Swift中的enum的自定义构造方法(面试点:可以设置

396,Swift中的enum的自定义构造方法(面试点:可以设置

作者: 枫叶1234 | 来源:发表于2020-12-31 08:36 被阅读0次

自定义构造方法

静态方法 一节当中我们已经提到它们可以作为从不同数据构造枚举的方便形式。在之前的例子里也展示过,对出版社经常误用的苹果设备名返回正确的名字:

enum Device { 
    case AppleWatch 
    static func fromSlang(term: String) -> Device? {
      if term == "iWatch" {
      return .AppleWatch
      }
      return nil
    }
}

我们也可以使用自定义构造方法来替换静态方法。枚举与结构体和类的构造方法最大的不同在于,枚举的构造方法需要将隐式的 self 属性设置为正确的 case

enum Device { 
    case AppleWatch 
    init?(term: String) {
      if term == "iWatch" {
      self = .AppleWatch
      }
      return nil
    }
}

在这个例子中,我们使用了可失败(failable)的构造方法。但是,普通的构造方法也可以工作得很好:

enum NumberCategory {
   case Small
   case Medium
   case Big
   case Huge
   init(number n: Int) {
    if n < 10000 { self = .Small }
    else if n < 1000000 { self = .Medium }
    else if n < 100000000 { self = .Big }
    else { self = .Huge }
   }
}
let aNumber = NumberCategory(number: 100)
print(aNumber)
// prints: "Small"

相关文章

网友评论

      本文标题:396,Swift中的enum的自定义构造方法(面试点:可以设置

      本文链接:https://www.haomeiwen.com/subject/mcqfoktx.html