1. 함수의 오버로딩

: 함수의 이름을 재사용하는것으로, 같은 함수의 이름에 여러개의 함수를 대응시키는 방식

예를 들어서 설명을 해보겠슴다!

// 완죤 똑같은 함수를 선언하면 
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 함수를 보면 됩니다! 같은 함수명이지만 파라미터의 종류에 따라서 각기 다르게 활용할 수 있다는 거~

Untitled

2. 범위에 대한 이해

스코프(Scope)란, 코드 내에서 같은 중괄호{} 범위 내에서 작성되는 코드 범위 이다. 이러한 스코프에는 중요한 원칙이 있다.

i) 변수는 코드에서 선언이 되어야지 접금 가능하다.(선언하기 이전에는 접근 불가) (전역변수는 예외.)

코드는 순차적으로 실행되기 때문에, 코드상에서 변수 접근에 앞서, 변수 선언이 이루어져야한다.

ii) 상위 스코프에 선언한 변수 및 상수에 접근 가능하며, 하위 스코프에는 접근이 불가능

상위스코프{ 하위스코프 }

iii) 동일한 스코프에서 이름이 중복될수는 없지만, 서로 다른 스코프에서는 이름 중복이 가능

iv) 가장 인접한 스코프에 있는 변수 및 상수에 먼저 접근한다

3. 오늘의 질문