함수 고급

JG Ahn·2024년 9월 30일

swift 기초

목록 보기
7/23

1. 매개변수 기본값

  • 매개변수의 기본값 지정 가능(기본값 가질 경우 매개변수 목록 중 뒤쪽에 위치하는 것이 좋음)
// 기본 형태
func 함수명(매개변수1: 타입, 매개변수2: 타입 = 기본값 ...) -> 반환타입 {
	return 반환값
}
func greeting(friend: String, me: String = "gildong") {
	print("Hello \(friend)! I'm \(me)")
}

greeting(friend: "Bale") //기본값을 가지는 매개변수는 생략 가능
greeting(friend: "Bale", me: "Kane")

2. 전달인자 레이블

  • 함수 호출시 사용자 입장에서 매개변수 역할을 명확히 표현(함수 호출시 사용하는 호칭)
  • 전달인자 레이블을 다르게 하면 동일한 이름의 함수 중복생성 가능
// 기본 형태
func 함수명(전달인자 레이블 매개변수1: 타입, 전달인자 레이블 매개변수2: 타입...) -> 반환타입 {
	return 반환값
}
func greeting(to friend: String, from me: String) {
	print("Hello \(friend)! I'm \(me)") //함수 내부에서는 매개변수명 사용
}

greeting(to: "Johnson", from: "Sonny") //함수 호출시 전달인자 레이블 사용
// 전달인자 레이블을 사용한 경우 매개변수 이름을 사용하면 에러 발생
greeting(friend: "Jackson", me: "Sonny") //에러

3. 가변 매개변수

  • 매개변수 값의 개수를 알기 어려울때 사용
  • 함수당 하나만 가질 수 있음
  • 기본값이 있는 매개변수와 마찬가지로 매개변수 목록 중 뒤쪽에 위치하는 것이 좋음
// 기본 형태 (타입 뒤에 ...을 붙임)
func 함수명(매개변수1: 타입, 전달인자 레이블 매개변수2: 타입...) -> 반환타입 {
	return 반환값
}
func sayHelloToFriends(me: String, friends: String...) -> String {
	return "Hello \(friends)! I'm \(me)"
}

print(sayHelloToFriends(me: "Harry", friends: "Bale", "Johnson", "Loyal"))

print(sayHelloToFriends(me: "Harry"))

// * 반환값 없는 함수, 매개변수 기본값, 전달인자 레이블, 가변 매개변수 모두 섞어서 사용 가능

4. 데이터 타입으로서의 함수

  • swift는 함수형 프로그래밍을 포함하는 다중 패러다임 언어.
  • swift의 함수는 일급객체(다른 객체에 일반적으로 적용 가능한 연산을 모두 지원하는 객체)
  • 함수의 반환 타입은 생략할 수 없음
var someFunction: (String, String) -> Void = greeting(to:from:)
someFunction("eric", "scott")

/* 매개변수 타입이 달라 에러. friends는 가변 매개변수.
someFunction = sayHelloToFriends(me:friends:) //
*/

// runAnother의 매개변수로 함수 사용
func runAnother(funcion: (String, String) -> Void) {
	function("Van", "Miki")
}

runAnother(function: greeting(friend:me:))

runAnother(function: someFunction)

0개의 댓글