[Swift Deep Dive] Extensions and Default Implementations for Protocols

Woozoo·2022년 12월 18일
extension SomeType {
	//Add new functionality
}
let my Double = 3.14159

let myRoundedDouble = String(format: "%.1f", myDouble)
print(myRoundedDouble)
//3.1
extension Double {
	func round(to places: Int) {
    	let precisionNumber = pow(10, Double(places))
        var n = self
        n = n * precisionNumber
        n.round()
        n = n / precisionNumber
        return n
    }
}

var myDouble = 3.14159

myDouble = myDouble * 1000
myDouble.round()
myDouble = myDouble / 1000

myDouble.round()
//3
myDouble.round(to: 3)
//3.141
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
button.backgroundColor = .red
button.layer.cornerRadius = 25
button.clipsToBounds = true

extension UIButton {
	func makeCircular() {
    	self.clipsToBounds = true
        self.layer.cornerRadius = self.frame.size.width / 2
    }
}
button.makeCircular()

버튼을 둥글게 만드는 두가지 방법~!
아래 꺼는 extension으로 구현한거!!

protocol CanFly {
	func fly()
}

extension CanFly {
	func fly() {
    	print("fly")	
    }
}

원래 프로토콜 채택하면 메소드 구현부 작성해줘야하는데
extension으로 프로토콜에 추가적인 함수의 구현부를 작성하면
프로토콜 채택할때마다 굳이 구현부 작성 안해줘도됨!

extension SomeType: SomeProtocol {
	//Add new functionality
}
profile
우주형

0개의 댓글