(規模、期間、運用の有無、注力する点、制約、一般的なプロジェクトとの違いなど)
(使う技術、Framework、対応OS、対応端末など)
(やりたいこと、最近の流行、前のプロジェクトの反省点など)
| protocol XibInstantiatable { | |
| func instantiate() | |
| } | |
| extension XibInstantiatable where Self: UIView { | |
| func instantiate() { | |
| let nib = UINib(nibName: String(self.dynamicType), bundle: nil) | |
| guard let view = nib.instantiateWithOwner(self, options: nil).first as? UIView else { | |
| return | |
| } |
| // case 1: using pipe | |
| class A { | |
| let signal: Signal<Void, NoError> | |
| let observer: Signal<Void, NoError>.Observer | |
| init() { | |
| (signal, observer) = Signal<Void, NoError>.pipe() | |
| } | |
| struct MyError: Error { | |
| } | |
| //// Signal | |
| print("------ Signal basic ------") | |
| let (signal, innerObserver) = Signal<Int, MyError>.pipe() | |
| signal.observeResult { result in | |
| switch result { |
| func someFunc(a: Int, b: Int) -> String { | |
| return "a = \(a), b = \(b)" | |
| } | |
| let parameters = (a: 0, b: 0) | |
| // someFunc(parameters) // not allowed in swift 3 | |
| let numbers: [Int] = [1, 2, 3] | |
| numbers | |
| .map { number -> (a: Int, b: Int) in |
| //: Playground - noun: a place where people can play | |
| import UIKit | |
| import XCPlayground | |
| import PlaygroundSupport | |
| let viewController = UIViewController() | |
| viewController.view.backgroundColor = .white |
| //: Playground - noun: a place where people can play | |
| import UIKit | |
| import UIKit | |
| import XCPlayground | |
| import PlaygroundSupport | |
| let viewController = UIViewController() |
| public protocol ApiRequestSetting { | |
| static var hostname: String { get } | |
| static var basePath: String { get } | |
| } | |
| final class StubConfigurator { | |
| private let setting: ApiRequestSetting.Type | |
| init(setting: ApiRequestSetting.Type) { |
| 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)) | |
| } | |
| } |