Notice
Recent Posts
Recent Comments
Link
大器晩成
[Extensions] 멤버의 확장(메서드) 본문
타입메서드의 확장
// 애플이 만든 타입메서드 예시
Int.random(in: 1...100)
extension Int {
static func printNumbersFrom1to5() {
for i in 1...5 {
print(i)
}
}
}
// 항상 1부터 5까지를 출력
Int.printNumbersFrom1to5()
인스턴스 메서드의 확장
// Int타입에 특정 프린트 구문 확장해보기
extension String {
func printHelloRepetitions(of times: Int) {
for _ in 0..<times {
print("Hello \(self)!")
}
}
}
"Zero".printHelloRepetitions(of: 4)
//Hello Zero!
//Hello Zero!
//Hello Zero!
//Hello Zero!
mutating 인스턴스 메서드의 확장
// 인스턴스 메소드는 익스텐션에서도 mutating 키워드를 사용하면 인스턴스 자신을 수정하도록 허용할 수 있다.
extension Int {
mutating func square() {
self = self * self
}
}
var value = 3 // 3
value.square() //9
value //9
let value2 = 3
//value2.square() //let 키워드는 상수이기 때문에 오류 발생
// 변수에 할당하지 않고 리터럴에 대해 직접 메소드를 호출하는 경우도 에러
// 3.square() // 메모리에 저장되어 있지 않기 때문
- 인스턴스 메서드는 익스텐션에서도 mutating 키워드를 사용하면 인스턴스 자신을 수정하도록 허용할 수 있습니다.
- 구조체나 열거형에서 정의된 메서드가 자기 자신의 인스턴스를 수정하거나 프로퍼티를 변경해야 할 때 mutating 키워드를 사용하는데, 익스텐션이 구조체나 열거형을 확장의 대상으로 삼았을 때가 이에 해당합니다.
728x90
'iOS > Swift 문법' 카테고리의 다른 글
[Extensions] 멤버의 확장(서브 스크립트) (0) | 2025.01.05 |
---|---|
[Extensions] 생성자의 확장 (0) | 2024.12.26 |
[Extensions] 멤버의 확장 (계산 속성) (0) | 2024.12.23 |
[Extensions] 확장 (0) | 2024.12.23 |
Any, AnyObject (0) | 2024.12.19 |