Files
SideMenu/Pod/Classes/Initializable.swift
T
2019-07-02 01:25:29 -07:00

40 lines
708 B
Swift

//
// Initializable.swift
// SideMenu
//
// Created by Jon Kent on 7/2/19.
//
import Foundation
internal protocol InitializableClass: class {
init()
}
extension InitializableClass {
init(_ block: (Self) -> Void) {
self.init()
block(self)
}
@discardableResult func with(_ block: (Self) -> Void) -> Self {
block(self)
return self
}
}
internal protocol InitializableStruct {
init()
}
internal extension InitializableStruct {
init(_ block: (inout Self) -> Void) {
self.init()
block(&self)
}
@discardableResult mutating func with(_ block: (inout Self) -> Void) -> Self {
block(&self)
return self
}
}