Toy Project/Swift Language Syntax

13. Swift Method extension

개발자킹콩 2021. 1. 22. 00:22

이미 만든 Structure에 메소드를 추가하고 싶다.
instance, type 이던 method를 추가할 수 있다.
기존의 structure에서 코드를 추가해도 되지만 
현재 코드라인에서 사용하고 싶으면(이게 가독성이 좋겠다라고 생각되면) extansion을 이용해도 된다.
그리고 협업시 모든 사람들이 해당 Structure에 접근하면 오류가 커질 수 있기에
각각 추가 코드라인을 만들어서 정상적으로 디버깅되면 추가하는 것도 좋은 방법이다.


struct Math {
  static func abs(value: Int) -> Int {
    if value > 0 {
      return value
    } else {
      return -value
    }
  }
}

print(Math.abs(value: -20))

// 제곱, 반값이 필요하다면
extension Math {
  static func square(value: Int) -> Int {
    return value * value
  }
  static func half(value: Int) -> Int {
    return value / 2
  }
}

print(Math.square(value: 10))
print(Math.half(value: 10))



// 이렇게 사용하고 싶지만 Int이란 type은 똑똑한 사람들이 이미 만들어놔서
// 건들면 무서운 코드들 사이에 추가를 해야한다.... 오류뜨면 와우~
// 이런경우 extension을 이용해서 기존에 정의된 type에 해당 method를 추가해도 된다!!

var value: Int = 10

extension Int {
  func square() -> Int {
    return self * self
  }
  
  func half() -> Int {
    return self/2
  }
}

print(value.square())
print(value.half())

 

 

'Toy Project > Swift Language Syntax' 카테고리의 다른 글

15. Swift Class Inheritance (상속)  (0) 2021.01.22
14. Swift Class  (0) 2021.01.22
12. Swift Method  (0) 2021.01.22
11. Swift Property(속성)  (0) 2021.01.21
10. Swift Protocol  (0) 2021.01.21