반응형
기본적인 함수의 구조
func functionName(param: ParamType) -> ReturnType {
//.....
return returnValue
}
//external name을 사용하는 경우
func functionName(externalName param: ParamType) -> ReturnType {
//.....
return returnValue
}
1. 오버로드
같은 함수의 이름을 갖지만 파라미터나 리턴이 달라지는 경우가 있는데 그럴때 오버로드가 사용된다.
사실 오버라이딩, 오버로딩은 Swift에 국한된 게 아니라, 객체지향 프로그래밍에서 쓰이는 개념이다 -> 키워드 오버라이드 오버로드
override, overload
func sum() { }
func sum() { } // Invalid redeclaration of 'sum()'
//같은 함수를 사용하면 중복이라는 경보가 뜬다
func sum() { }
func sum(n: Int) { }
func sum() -> Int { return 0 }
//같은 함수의 이름을 갖지만 파라미터나 리턴이 달라지는 경우 -> 오버로드
//음료자판기가 있는데 한국용과 미국용으로 만든다면?
//한국용
func printTotalPrice(price: Int, count:Int){
print("Total Price: \(price * count)")
}
//미국달러 -> 소숫점을 표현해야하는 경우
func printTotalPrice(price: Double, count:Double){
print("Total Price: \(price * count)")
}
//param을 유니코드
func printTotalPrice(가격: Double, 갯수: Double){
print("Total Price: \(가격 * 갯수)")
}
2. In-out parameter
함수에 parameter에 들어가는 순간 constant가 된다. parameter값을 증감시키고 싶을 때 사용
//in-out parameter
//함수에서 파라미터에 1을 더하는 함수
//func incrementAndPrint(_ value: Int){
// value += 1
// print(value)
//}
// 파라미터에 들어가는 순간 이녀석은 constant가 된다. 그렇기 때문에 +=를 적용할수 없다.
var value = 3 //초기값
func incrementAndPrint(_ value: inout Int){
value += 1
print(value)
}
incrementAndPrint(&value) //& 기입하기
3. 함수안에 함수를 넣기
//변수의 인자로 함수를 넣는 방법
//보통은 인자로 value만 넣었지만 현대의 문법은 함수자체를 넣기도 한다.
// --------Function as a param
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
//스위프트에서는 이런 함수 자체를 변수에 할당 할 수 있다.
var function = add
//끝
function(4,2)
function = subtract
function(4,2)
//a와 b를 받아서 function에 넘겨주면 그에 대한 result를 프린트 해주는 함수
func printResult(_ function: (Int, Int) -> Int, _ a: Int,_ b: Int) {
let result = function(a,b)
print(result)
}
printResult(add, 10, 5)
// function에 add함수가 들어오고 10, 5를 받아서 계산됨
printResult(subtract, 10, 5)
//추가로 곱셈 나눗셈도 해보기
func multiple(_ a:Int, _ b: Int) -> Int{
return a * b
}
printResult(multiple, 10, 5)
func divide(_ a: Int,_ b: Int) -> Int {
return a / b
}
printResult(divide, 10, 5)
강사님의 마지막 코멘트는 실무에서 근본적으로 생각하는 것은 되도록 한가지 일만 할 수 있도록 만들라는 것이었다. 되도록 10줄 이하라는 제약을 걸어서 함수를 가장 순수하게 만들어가는 고민을 하도록 하자. 고민은 실력이 될것이다.
반응형
'모바일앱 > Swift' 카테고리의 다른 글
Collection - Dictionary (0) | 2021.10.10 |
---|---|
Collection - Array (0) | 2021.10.09 |
옵셔널 도전과제 (0) | 2021.10.08 |
옵셔널 (0) | 2021.10.07 |
기본함수사용능력 테스트 (0) | 2021.10.06 |
함수 응용하기 (0) | 2021.10.05 |
함수 기본 (0) | 2021.10.04 |
21.9월.5주 복습(월) - 플로우 컨트롤 (0) | 2021.10.04 |