Advertisement
Guest User

Untitled

a guest
Apr 17th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. import Foundation
  2.  
  3. // Sample1: 分解して再構築
  4. struct Person {
  5. let name: String
  6. let isValid: Bool = true
  7. }
  8.  
  9. let names: [String] = ["jolly", "joester"]
  10.  
  11. // ①初期状態
  12. //var persons: [Person] = []
  13. //for name in names {
  14. // let person = Person(name: name)
  15. // if person.isValid {
  16. // persons.append(person)
  17. // }
  18. //}
  19.  
  20. // ②関心の分離
  21. //var possiblePersons: [Person] = []
  22. //for name in names {
  23. // let person = Person(name: name)
  24. //}
  25. //
  26. //var persons: [Person] = []
  27. //for person in persons {
  28. // if person.isValid {
  29. // persons.append(person)
  30. // }
  31. //}
  32.  
  33. // ③mapとfiltreを使う
  34. //let possiblePersons = names.map(Person.init)
  35. //let persons = possiblePersons.filter { $0.isValid }
  36.  
  37. let persons = names
  38. .map(Person.init)
  39. .filter { $0.isValid }
  40.  
  41.  
  42. // Sample2:
  43. // ①初期状態
  44. //func login(username: String, password: String, completion: (String?, Error?) -> Void) {
  45. //
  46. //}
  47. //
  48. //login(username: "jolly", password: "joester") {
  49. // (token, error) in
  50. // if let token = token {
  51. // // success
  52. // } else if let error = error {
  53. // // failure
  54. // }
  55. //}
  56.  
  57. // ②ラベルをつける
  58. //func login(username: String, password: String, completion: (_ token: String?, Error?) -> Void) {
  59. //
  60. //}
  61. //
  62. //login(username: "jolly", password: "joester") {
  63. // (token, error) in
  64. // if let token = token {
  65. // // success
  66. // } else if let error = error {
  67. // // failure
  68. // }
  69. //}
  70.  
  71. // ③Tokenを型にする
  72. struct Token {
  73. let string: String
  74. }
  75.  
  76. //func login(username: String, password: String, completion: (Token?, Error?) -> Void) {
  77. //}
  78. //
  79. //login(username: "jolly", password: "joester") { (token, error) in
  80. // if let token = token {
  81. // // success
  82. // } else if let error = error {
  83. // // failure
  84. // }
  85. //}
  86.  
  87. // ④username AND passwordを型にする
  88. struct Credential {
  89. var username: String
  90. var password: String
  91. }
  92.  
  93. let credential = Credential(username: "jolly", password: "joester")
  94.  
  95. //func login(credential: Credential, completion: (Token?, Error?) -> Void) {
  96. //
  97. //}
  98. //
  99. //login(credential: credential) { (token, error) in
  100. // if let token = token {
  101. // // success
  102. // } else if let error = error {
  103. // // failure
  104. // }
  105. //}
  106.  
  107. // ⑤token OR errorを型にする
  108. enum Result<Value> {
  109. case success(Value)
  110. case failure(Error)
  111. }
  112.  
  113. func login(credential: Credential, completion: (Result<Token>) -> Void) {
  114.  
  115. }
  116.  
  117. login(credential: credential) { result in
  118. switch result {
  119. case .success(let token):
  120. // success
  121. print("success")
  122. case .failure(let error):
  123. // failure
  124. print("failure")
  125. }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement