Skip to content

Instantly share code, notes, and snippets.

@halftrue
Created May 2, 2017 10:08
Show Gist options
  • Save halftrue/9c8c56b819e5bfd3dc0acb344cb92746 to your computer and use it in GitHub Desktop.
Save halftrue/9c8c56b819e5bfd3dc0acb344cb92746 to your computer and use it in GitHub Desktop.
A way to initialize object with backward compatibility.
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