Yoshikuni Kato
- Two people do programming together
- Originated from Extreme Programming, which is one origin of Agile method
| let array: Array<Int> = [1, 2, 3] | |
| func double(input: Int) -> Int { | |
| return input * 2 | |
| } | |
| let mappedArray = array.map { value in | |
| return double(input: value) | |
| } |
Yoshikuni Kato
| import UIKit | |
| struct Style<View: UIView> { | |
| let apply: (View) -> View | |
| // from swift 5.2 | |
| func callAsFunction(_ view: View) -> View { | |
| apply(view) | |
| } | |
| } |
| import UIKit | |
| import PlaygroundSupport | |
| // 1. define style as function | |
| // 2. make syntax readable | |
| import UIKit | |
| import PlaygroundSupport | |
| // 1. define style as function | |
| typealias ViewStyle = (UIView) -> UIView | |
| let cornerRadius10: ViewStyle = { view -> UIView in | |
| view.layer.cornerRadius = 10.0 | |
| return view | |
| } |
| typealias Completion<Value, Error: Swift.Error> = (Result<Value, Error>) -> Void | |
| typealias TaskHandler<Value, Error: Swift.Error> = (@escaping Completion<Value, Error>) -> Void | |
| struct Task<Value, Error: Swift.Error> { | |
| private let handler: TaskHandler<Value, Error> | |
| init(_ handler: @escaping TaskHandler<Value, Error>) { | |
| self.handler = handler | |
| } |
| enum SingleOrMultiple<Value> { | |
| case single(Value) | |
| case multiple([Value]) | |
| func map<T>(_ transform: (Value) throws -> T) rethrows -> SingleOrMultiple<T> { | |
| switch self { | |
| case let .single(value): return .single(try transform(value)) | |
| case let .multiple(values): return .multiple(try values.map(transform)) | |
| } | |
| } |