Skip to content

Instantly share code, notes, and snippets.

@justinmakaila
Created October 30, 2015 01:15
Show Gist options
  • Select an option

  • Save justinmakaila/70c419bf616355ff6c48 to your computer and use it in GitHub Desktop.

Select an option

Save justinmakaila/70c419bf616355ff6c48 to your computer and use it in GitHub Desktop.
// Protocol oriented design example
protocol Endpoint {
var method: String { get }
var path: String { get }
var body: [String: AnyObject] { get }
}
func request(endpoint: Endpoint) {
APIClient.request(endpoint.path, method: endpoint.method);
}
struct GithubEndpoint: Endpoint {
var method: String {
return "GET"
}
var path: String {
return "/users"
}
var body: [String: AnyObject] {
return [:]
}
}
let endpoint = GithubEndpoin()
request(endpoint)
// Optionals
func createPerson(name: String, nickname: String?) -> Person {
return Person(name: name, nickname: nickname!)
}
func createPerson(name: String, nickname: String) -> Person {
return Person(name: name, nickname: nickname);
}
struct Person {
let name: String
let nickname: String!
init(name: String, nickname: String) {
self.name = name
self.nickname = nickname
}
init(name: String) {
self.name = name
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment