What is the point of using an implicitly deployed optional in this example?

This is from the document, Failover Initializers for Classes section :

class Product {

     let name: String!
     init?(name: String) {
           self.name = name
           if name.isEmpty { return nil }
     }
}


if let bowTie = Product(name: "") {
   // no need to check if bowTie.name == nil
   print("The product name is \(bowTie.name)")
}

It is described as:

name Product (String!). , , nil, . nil , Product, . , name .

:

, name .

. , return nil, String ( ), String? ().

, , . init.

, - , ? , - ? , , , . :

class Product {

    var name: String! //let is changed to var

    init?(name: String) {

       if name.isEmpty { return nil } //Check here if passed value is non-empty
       self.name = name
    }
}

, name.

+4
1

.

, , Swift 2.2, , , :

class Product {
    let name: String
    init?(name: String) {
        if name.isEmpty { return nil }
        self.name = name
    }
}

, deinit nil failable initializer.

Xcode 7.3 beta 2 :

, failable (init?()), throwing (init() throws), super.init(). , . self.init().

+3

Source: https://habr.com/ru/post/1626397/


All Articles