Swift可失败构造器和必要构造器

原创 Laughing  2017-06-30 20:58  阅读 163 次 评论 0 条

可失败构造器

语法

可失败构造器的语法为在init关键字后面添加问号
init?()
通过return nil语句来表明可失败构造器在何种情况下应该失败

可失败构造函数的参数名和参数类型,不能与其他非可失败构造函数的参数名以及参数类型相同
  1. struct Animal{    
  2.     let species:String    
  3.     init?(species:String) {    
  4.         if  species.isEmpty {    
  5.             return nil    
  6.         }    
  7.         self.species = species    
  8.     }    
  9. }    
  10.     
  11. let someCreature = Animal(species: "Giraffe")    
  12.     
  13. if let giraffe = someCreature?.species{    
  14.     print("An animal was initialized with a species of \(giraffe)")    
  15. }    
  16.     
  17. let anonymousCreature = Animal(species: "")    
  18. if anonymousCreature == nil {    
  19.     print("The anonymous creature could not be initialized")    
  20. }    

必要构造器

语法

类的构造器前添加代码修饰符表明所有该类的子类都必须实现该构造器

子类重写父类的必要构造器时,必须在子类的构造器前也添加required修饰符,表明该构造器要求也应用于继承链后面的子类”。
  1. class someClass{    
  2.     var name:String    
  3.         
  4.     required init(name:String){    
  5.         self.name=name    
  6.     }    
  7. }    
  8.     
  9. class anotherClass:someClass{    
  10.     //不添加required参数会报错    
  11.    required init(name:String) {    
  12.         super.init(name: name)    
  13.     }    
  14.         
  15. }    

本文地址:https://www.lisen.me/swift-constructor-can-defeat-the-constructor-and-necessary.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情