: 함수의 이름을 재사용하는것으로, 같은 함수의 이름에 여러개의 함수를 대응시키는 방식
예를 들어서 설명을 해보겠슴다!
// 완죤 똑같은 함수를 선언하면
func sum() { }
func sum() { } //error: // Invalid redeclaration of 'sum()'
// 하지만 조금씩 바꿔준다면..? -> 아무런 에러도 생기지 않는다.
func sum() { }
func sum(n: Int) { }
func sum() -> Int { return 0 }
위에 코드를 보면 함수를 완젼 똑같이 선언을 하게 된다면 재정의를 했다는 에러가 생기지만, 매개변수, 리턴타입 등 조금만 변경하고 함수 이름은 그대로인 경우는 아무런 에러가 생기지 않는다.
이렇듯 Swift는 함수를 식별할 땐 단순히 함수 이름을 보고 하는 게 아니라, 함수 이름, 파라미터(타입, 갯수, Argument Label), 리턴타입을 모두 종합해서 함수를 식별하며
비슷한 기능을 하는 함수의 이름을 굳이 다르게 해서 전부 숙지해야 하는 수고로움을 덜어주는 이점을 주는 오버로딩을 제공하는구나!!! 를 배우면 됩니다!!!
→ 간단한 예시로는 UICollectionView의 register 함수를 보면 됩니다! 같은 함수명이지만 파라미터의 종류에 따라서 각기 다르게 활용할 수 있다는 거~
스코프(Scope)란, 코드 내에서 같은 중괄호{} 범위 내에서 작성되는 코드 범위 이다. 이러한 스코프에는 중요한 원칙이 있다.
→ 코드는 순차적으로 실행되기 때문에, 코드상에서 변수 접근에 앞서, 변수 선언이 이루어져야한다.
→ 상위스코프{ 하위스코프 }