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
}
}
[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 {
...
}