728x90
반응형
1. 파라미터 기본값
파라미터에 기본으로 전달될 값을 미리 지정해둘 수 있다.
여기서 기본값을 지정할 파라미터는 파라미터 목록 중 뒤쪽에 위치하는 것이 좋다고 한다.
func 함수 이름(파라미터 이름: 파라미터 타입, 파라미터 이름: 파라미터 타입 = 파라미터 기본값) -> 리턴 타입 {
//함수 구현
return 리턴값
}
//게다가 함수 호출 시 기본값이 있는 파라미터는 생략이 가능하다
2. 전달인자 레이블(Argument Label)
사용자 입장에서 함수 호출 시 파라미터 역할을 더 명확히 알 수 있도록 할 때 사용한다.
전달인자 레이블을 변경해 동일한 이름의 함수를 중복으로 생성 가능하다.
이 부분이 제대로 이해가 안됐는데 밑에 코드로 다시 적어보겠다.
func 함수 이름(전달인자 레이블 파라미터 이름: 파라미터 타입) -> 리턴 타입 {
//함수 구현
return 리턴값
}
//짧은 예
func say(hi a: String) -> Void {
print("hi")
}
func say(bye a:String) -> Void {
print("bye")
}
//두 say라는 함수는 에러가 아니고 두 함수는 서로 다르기에 전달인자 레이블에 따라 함수가 호출된다
say(hi: "aa") // "hi"
say(bye: "bb") // "bye"
3. 가변 파라미터
전달받을 값의 개수를 알기 힘들 때 사용한다.
가변 파라미터는 함수 당 하나만 사용할 수 있다.
기본 값이 있는 파라미터처럼 파라미터 목록 중 뒤에 위치하는 것이 좋다.
func sayHelloToFriends(me: String, friends: String...) -> String {
return "Hello \(friends)! I'm \(me)!"
}
print(sayHelloToFriends(me: "kim", friends: "hana", "eric", "wing"))
// Hello ["hana", "eric", "wing"]! I'm kim!
print(sayHelloToFriends(me: "kim"))
// Hello []! I'm kim!
지금까지 소개했던 1, 2, 3, 4번을 모두 섞어서도 사용이 가능하다.
4. 데이터 타입으로서의 함수
스위프트는 다중 패러다임 언어인데 함수형 프로그래밍 패러다임을 포함하기 때문에 스위프트의 함수는 일급객체(?)라고 한다.
그래서 함수를 변수나 상수에 할당할 수 있고, 파라미터를 통해 전달할 수도 있다.
이 때, 리턴 타입을 생략할 수 없다.
func sayHello(to friend: String, from me: String) {
print("Hello \(friend)! I'm \(me)")
}
var runOne: (String, String) -> Void = sayHello(to:from:)
runOne("kim", "lee")
func runA(function: (String, String) -> Void) {
function("jenny", "mike")
}
runA(function: runOne)
강사는 스위프트 전반적인 문법에서 띄어쓰기에 주의해야 한다고 당부한다.
728x90
반응형
'Language > Swift' 카테고리의 다른 글
Swift - 반복문 (for-in, while, repeat-while) (0) | 2022.09.21 |
---|---|
Swift - 조건문(if-else, switch) (2) | 2022.09.20 |
Swift - 함수 기본 (0) | 2022.09.16 |
Swift - 컬렉션 타입(Collection Type) - Array, Dictionary, Set (0) | 2022.09.15 |
Swift - Any, AnyObject, nil (0) | 2022.09.14 |