Extension

Extensions add new functionality to an existing class, structure, enumeration, or protocol type.

[sample code]

extension SomeType {
	// add new functionallity
}

extension Double {
    func round(to places: Int) -> Double {
        let precisionNumber = pow(10, Double(places))
      //  print("precision = \\(precisionNumber)")
        var n = self
        n = n * precisionNumber
        n.round()
        n = n / precisionNumber
        return n
    }
}

extension UIButton {
    func makeCircle() {
        self.backgroundColor = .blue
        self.clipsToBounds = true
        //self.layer.cornerRadius = 10
        self.layer.cornerRadius = self.frame.size.width / 2
    }
}

Protocol Extension

[sample code]

extension SomeProtocol {
	// Define default behaviour
}

protocol CanFly {
    func fly()
}

extension CanFly {
    func fly() {
        print("hello Extensions Fly method!")
    }
}

// extension으로 구현해놓을 시, 해당 프로토콜을 채택해도 꼭 구현할 필요는 없어짐.
// 단, 채택한 클래스에서 구현했을 시 해당 함수 실행

활용

<aside> 💡 extension을 활용해서 코드분리하는 방법

</aside>

// MARK: - UITextFieldDelegate 
extension WeatherViewController: UITextFieldDelegate {
	...
}