반응형
매개변수에 기본값 지정
//매개변수의 타입을 지정한 뒤에 "=기본값"을 입력해 기본값을 지정합니다.
func funcName(parameter1: String, parameter2: String="다다익선"){
print("\(parameter1)은(는) \(parameter2)!")
}
//기본값을 가지는 매개변수는 호출시 생략 가능.
funcName(parameter1:"공부") //공부은(는) 다다익선!
funcName(parameter1:"게임", parameter2:"적당히") //게임은(는) 적당히!
전달인자 레이블 사용
전달인자 레이블은 함수를 호출해서 사용할 떄,
변수들을 쉽게 구분하기 위한 용도로 사용합니다.
별다른 명칭없이 넣고 싶다면 _를 사용하면 됩니다.
func func1(from name1: String, to name2: String){
//함수 내부에선 매개변수 이름을 사용한다.
print("\(name1)는 \(name2)에게 인사합니다.")
}
//함수 호출시는 전달인자 레이블을 사용해야 합니다.
func1(name1: "나", name2: "당신") //오류
func1(from: "나", to: "당신") //나는 당신에게 인사합니다.
//_사용시 java처럼 별다른 명칭없이 매개변수를 넣을 수 있다.
func func2(_ name1: String, _ name2: String){
//함수 내부에선 매개변수 이름을 사용한다.
print("\(name1)는 \(name2)에게 인사합니다.")
}
func2( "나", "당신") //나는 당신에게 인사합니다.
가변 매개변수 사용
전달받을 값의 개수를 알기 어려울때 사용합니다.
단, 가변 매개변수는 함수당 하나만 가질 수 있습니다.
func fun1(me name1: String, friends name2: String...) -> String{
return "아..안녕 \(name2)! 나 \(name1)랑 친구해줄래...?"
}
print( fun1(me: "아무무", friends: "베이가", "애니", "티모") )
//아..안녕 ["베이가", "애니", "티모"]! 나 아무무랑 친구해줄래...?
//가변매개변수는 입력을 하지 않을수도 있습니다.
print( fun1(me: "아무무") )
//아..안녕 []! 나 아무무랑 친구해줄래...?
함수타입 사용
Swift는 다중 프로그래밍 패러다임 언어로써, 함수는 일급객체로 취급됩니다.
그래서 Swift에서는 함수 자체를 타입으로 사용할 수 있습니다.
즉, 함수를 데이터 타입 뿐만 아니라 매개변수 및 리턴타입으로도 사용가능합니다.
//타입으로 사용할 함수
func basicFunc(me name1: String, friend name2: String) ->String{
return "\(name1)는 \(name2)와 친구야!"
}
func basic2Func(me name1: String, friend name2: String) ->String{
return "\(name1)는 \(name2)와 친구가 아니야!"
}
func anotherFunc(me name: String, age num: Int) ->String{
return "\(name)는 \(num)살이야!"
}
함수를 타입으로 사용
var callFunc: (String, String) ->String = basicFunc(me: friend:)
print( callFunc("애니", "아무무") )//애니는 아무무와 친구야!
//물론 타입이 다른 함수는 할당이 불가능합니다.
var callFunc: (String, String) -> Void = anotherFunc(me: age:) //에러
//타입으로 사용하는 함수의 매개변수는 생략이 가능합니다.
var callFunc2: (String, String) ->String = basicFunc
print( callFunc2("애니", "아무무") )//애니는 아무무와 친구야!
함수를 매개변수로 사용
func useFuncParameter(_ type: String, _ addFunc: (String, String)->String,
_ name1: String, _ name2: String)-> Void{
print ( "\(type)인 \(addFunc(name1, name2))" );
}
useFuncParameter("인싸", basicFunc, "애니", "아무무")
//인싸인 애니는 아무무와 친구야!
함수를 결과값으로 사용
(위의 useFuncParameter함수 사용)
func useFuncResult(_ type: Bool) ->(String, String)->String{
return type ? basicFunc : basic2Func
}
useFuncParameter("인싸", useFuncResult(true), "애니", "아무무")
//인싸인 애니는 아무무와 친구야!
useFuncParameter("아싸", useFuncResult(false), "아무무", "애니")
//아싸인 아무무는 애니와 친구가 아니야!
공부에 도움을 준 사이트
* 전체적인 공부 가이드라인
* 예제 참고
https://noahlogs.tistory.com/19
반응형
'Language > Swift' 카테고리의 다른 글
Swift 다양한 switch-case 패턴들 (0) | 2021.03.09 |
---|---|
Swift의 조건문 (0) | 2021.03.09 |
Swift 간단한 사칙연산 (0) | 2021.03.09 |
Swift 함수의 선언과 호출 (0) | 2021.03.09 |
Swift 기초 개념 및 데이터 타입 (0) | 2021.03.08 |