Created
May 2, 2017 10:08
-
-
Save halftrue/9c8c56b819e5bfd3dc0acb344cb92746 to your computer and use it in GitHub Desktop.
A way to initialize object with backward compatibility.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UserBuilder { | |
var name: String | |
var gender: String | |
init() { | |
self.name = "default name" | |
self.gender = "default gender" | |
} | |
} | |
class User { | |
let name: String | |
let gender: String | |
init(builder: UserBuilder) { | |
self.name = builder.name | |
self.gender = builder.gender | |
} | |
convenience init(buildBlock: (UserBuilder) -> Void) { | |
let aUserBuilder = UserBuilder() | |
buildBlock(aUserBuilder) | |
self.init(builder: aUserBuilder) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment