In swift3 document. It is recommended to use lazy by the two following ways:
1. directly init
`lazy var someViews: UILabel = UILabel()`
2. init with block
    lazy var overlayView: UILabel = { [unowned self] in
        let overlayView = UILabel()
        overlayView.backgroundColor = self.backgroundColor.withAlphaComponent(0.90)
        overlayView.font = UIFont.boldSystemFont(ofSize: YFCalendarOverlaySize)
        overlayView.textColor = self.overlayTextColor
        overlayView.alpha = 0.0
        overlayView.textAlignment = .center
        overlayView.translatesAutoresizingMaskIntoConstraints = false
        return overlayView
    }()
If I want to lazily initialize some variable with some default value. I can only use the 2nd way. But that seems too clumsy. So, I use the following method to initialize the lazy var. It runs ok. But is it really okay? I want some help.
class SomeViewController: UIViewController {
    lazy var someViews: UILabel = self.initSomeViews()
    override func viewDidLoad() {
        print(self.someViews)
    }
}
fileprivate extension SomeViewController {
    func initSomeViews() -> UILabel! {
        let overlayView = UILabel()
        overlayView.backgroundColor = UIColor.white.withAlphaComponent(0.90)
        overlayView.font = UIFont.boldSystemFont(ofSize: YFCalendarOverlaySize)
        overlayView.alpha = 0.0
        overlayView.textAlignment = .center
        overlayView.translatesAutoresizingMaskIntoConstraints = false
        return overlayView
    }
}
 
     
     
     
     
    