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)) | |
} | |
} |