함수
함수의 선언
import Swift
func <#함수이름#>(<#매개변수1이름#>: <#매개변수1타입#>, <#매개변수2이름#>: <#매개변수2타입#> ...) -> <#반환타입#> {
<#함수 구현부#>
return <#반환값#>
}
예시
func sum(a: Int, b: Int) -> Int {
return a + b
}
func <#함수이름#>(<#매개변수1이름#>: <#매개변수1타입#>, <#매개변수2이름#>: <#매개변수2타입#> ...) -> Void {
<#함수 구현부#>
return
}
예시
func printMyName(name: String) -> Void {
print(name)
}
func <#함수이름#>(<#매개변수1이름#>: <#매개변수1타입#>, <#매개변수2이름#>: <#매개변수2타입#> ...) {
<#함수 구현부#>
return
}
예시
func printYourName(name: String) {
print(name)
}
func <#함수이름#>() -> <#반환타입#> {
<#함수 구현부#>
return <#반환값#>
}
예시
func maximumIntegerValue() -> Int {
return Int.max
}
func 함수이름 () -> Void {
<#함수 구현부#>
return
}
예시
func hello () -> Void {
print("hello")
}
예시
sum(a: 3, b: 5) // 8
printMyName(name: "yagom") // yagom
printYourName(name: "hana") // hana
maximumIntegerValue() // Int의 최댓값
hello() // hello
bye() // bye
매개변수 기본값
func <#함수이름#>(<#매개변수1이름#>: <#매개변수1타입#>, <#매개변수2이름#>: <#매개변수2타입#> = <#매개변수 기본값#> ...) -> <#반환타입#> {
<#함수 구현부#>
return <#반환값#>
}
예시
func greeting(friend: String, me: String = "yagom") {
print("Hello \(friend)! I'm \(me)")
}
greeting(friend: "hana") // Hello hana! I'm yagom
greeting(friend: "john", me: "eric") // Hello john! I'm eric
전달인자 레이블
func <#함수이름#>(<#전달인자 레이블#> <#매개변수1이름#>: <#매개변수1타입#>, <#전달인자 레이블#> <#매개변수2이름#>: <#매개변수2타입#> ...) -> <#반환타입#> {
<#함수 구현부#>
return
}
func greeting(to friend: String, from me: String) {
print("Hello \(friend)! I'm \(me)")
}
greeting(to: "hana", from: "yagom") // Hello hana! I'm yagom
가변 매개변수
func <#함수이름#>(<#매개변수1이름#>: <#매개변수1타입#>, <#전달인자 레이블#> <#매개변수2이름#>: <#매개변수2타입#>...) -> <#반환타입#> {
<#함수 구현부#>
return
}
예시
func sayHelloToFriends(me: String, friends: String...) -> String {
return "Hello \(friends)! I'm \(me)!"
}
print(sayHelloToFriends(me: "yagom", friends: "hana", "eric", "wing"))
// Hello ["hana", "eric", "wing"]! I'm yagom!
print(sayHelloToFriends(me: "yagom"))
// Hello []! I'm yagom!
위에 설명한 함수의 다양한 모양은 모두 섞어서 사용 가능.
데이터 타입으로서의 함수
함수의 타입표현
예시
var someFunction: (String, String) -> Void = greeting(to:from:)
// 매개변수의 데이터형이 string인 2개가 있고, 반환값이 없는 함수가 들어갈것이다.
someFunction("eric", "yagom") // Hello eric! I'm yagom
someFunction = greeting(friend:me:)
someFunction("eric", "yagom") // Hello eric! I'm yagom
//someFunction = sayHelloToFriends(me: friends:)
// friends가 가변매개변수이므로 타입이 달라서 안됨.
예시
func runAnother(function: (String, String) -> Void) {
function("jenny", "mike")
}
// Hello jenny! I'm mike
runAnother(function: greeting(friend:me:))
// Hello jenny! I'm mike
runAnother(function: someFunction)