Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- // Sample1: 分解して再構築
- struct Person {
- let name: String
- let isValid: Bool = true
- }
- let names: [String] = ["jolly", "joester"]
- // ①初期状態
- //var persons: [Person] = []
- //for name in names {
- // let person = Person(name: name)
- // if person.isValid {
- // persons.append(person)
- // }
- //}
- // ②関心の分離
- //var possiblePersons: [Person] = []
- //for name in names {
- // let person = Person(name: name)
- //}
- //
- //var persons: [Person] = []
- //for person in persons {
- // if person.isValid {
- // persons.append(person)
- // }
- //}
- // ③mapとfiltreを使う
- //let possiblePersons = names.map(Person.init)
- //let persons = possiblePersons.filter { $0.isValid }
- let persons = names
- .map(Person.init)
- .filter { $0.isValid }
- // Sample2:
- // ①初期状態
- //func login(username: String, password: String, completion: (String?, Error?) -> Void) {
- //
- //}
- //
- //login(username: "jolly", password: "joester") {
- // (token, error) in
- // if let token = token {
- // // success
- // } else if let error = error {
- // // failure
- // }
- //}
- // ②ラベルをつける
- //func login(username: String, password: String, completion: (_ token: String?, Error?) -> Void) {
- //
- //}
- //
- //login(username: "jolly", password: "joester") {
- // (token, error) in
- // if let token = token {
- // // success
- // } else if let error = error {
- // // failure
- // }
- //}
- // ③Tokenを型にする
- struct Token {
- let string: String
- }
- //func login(username: String, password: String, completion: (Token?, Error?) -> Void) {
- //}
- //
- //login(username: "jolly", password: "joester") { (token, error) in
- // if let token = token {
- // // success
- // } else if let error = error {
- // // failure
- // }
- //}
- // ④username AND passwordを型にする
- struct Credential {
- var username: String
- var password: String
- }
- let credential = Credential(username: "jolly", password: "joester")
- //func login(credential: Credential, completion: (Token?, Error?) -> Void) {
- //
- //}
- //
- //login(credential: credential) { (token, error) in
- // if let token = token {
- // // success
- // } else if let error = error {
- // // failure
- // }
- //}
- // ⑤token OR errorを型にする
- enum Result<Value> {
- case success(Value)
- case failure(Error)
- }
- func login(credential: Credential, completion: (Result<Token>) -> Void) {
- }
- login(credential: credential) { result in
- switch result {
- case .success(let token):
- // success
- print("success")
- case .failure(let error):
- // failure
- print("failure")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement