프로그래밍/IOS (Swift)

[Swift] Argument Label 함수 Parameter 중간에 이름이?

훙리 2021. 4. 21. 13:11

Swift라는 언어를 급하게 배운것에 대한 폐해라고 생각합니다 ㅎ.

부끄럽기도 한 부분이지만 같은 햇갈림을 가지고 있을 사람들에게 조금이나마 도움이 되고자 작성을 합니다.

 

처음으로 이 문제에 대해서 생각한것은 Main class에서

UITableViewDataSource, UITableViewDelegate

를 extends 했을때 관심을 가지기 시작했다. 

 

이중 UITableViewDataSource를 extends 할 시 아래와 같은 필수 구현 함수들이 나옵니다. 

 

func tableView(_ tableView : UITableView, cellForRowAt indexPath : IndexPath) {
// tableView 에 표시할 셀을 요청하는 메서드

}
 
func tableView(_ tableView : UITableView, numberOfRowsInSection section : Int){
// 각 섹션에 출력될 행의 개수

}

 

일반적으로 생각했을때 필수적인 콜백 함수라고 생각을 했고 가운데 있는 cellForRowAt, numberOfRowsInSection 이 이름이라고 생각했습니다.

 

갑자기 생기는 궁금증에 그러면 이렇게 항상 불편하게 함수를 구분해야하나 좀 알아봤습니다. 

 

검색해보자마자 정말 바보같았다는 생각이 들었습니다. 

Swift에서는 기본적으로 func의 parameter 에 이름을 부여할 수 있습니다. 

바로 Argument Label 이를 [인수명] 이라고 하죠 

이러한 인수명을 쓰지 않을때는 언더바( _ ) 를 넣어서 인수명을 생략할 수 있습니다.

 

저것은 단순히 인수명이었던것 입니다...

 

그러면 여기서 인수명을 다르게 한 같은 Type의 parameter를 넣으면 어떻게 될까 궁금해서 Playground에서 작성해 보았습니다.

 

func test(_ temp : Int, tempParam temp2 : Int) -> Int {
    return temp + temp2
}
func test(_ temp : Int, tempParam2 temp2 : Int) -> Int {
    return temp * temp2
}

print(test(1, tempParam: 2))
print(test(1, tempParam2: 2))

 당연히 잘나옵니다... 다르게 잘 작용합니다...

 

결론 : 기초가 중요하다.