함수: 작업의 가장 작은 단위이자 코드의 집합으로 반복적인 프로그래밍을 피하고자 사용한다.
- 함수 선언과 사용
- 호출 시 매개변수 기본값 설정
- 반환값이 없는 함수
/*
func 함수명(파라미터 이름: 데이터타입) -> 반환타입 { return 반환 값 }
*/
// #두개의 값을 더하는 함수
func sum(a: Int, b: Int) -> Int{
return a+b
}
//사용
sum(a: 5, b: 3) // 8
// #호출되면 hello 를 반환하는 함수
func hello() -> String{
return "hello"
}
//사용
hello() //"hello"
// #호출 시 매개변수 기본값 설정
func greeting(friend: String, me: String = "Sue") {
print("hello \(friend)! I'm \(me)")
}
//사용
greeting(friend: "Harry") // "hello Harry! I'm Sue/n"
// #반환값이 없는 함수
func printname() -> Void{}
전달인자 레이블을 사용하면 매개변수의 역할을 명확하게 파악할 수 있으며 코드의 가독성이 좋아진다.
- 전달인자 레이블을 사용하는 함수
- 전달인자 레이블을 사용하지 않는 함수
- 가변매개변수를 사용하는 함수
// #전달인자 레이블을 사용하는 함수
/*
func함수 이름(전달인자 레이블: 매개변수 이름: 메게변수 타입, 전달인자 레이블: 매개변수 이름: 메게변수 타입) -> 반환타입 {
return 반환값
}
*/
// #전달인자 레이블을 사용하는 함수 선언
func sendMessage(from myname: String, to name: String) -> String{
return "Hello \(name)! I'm \(myname)"
}
//사용
sendMessage(from: "Harry", to: "Sue") //"Hello Sue! I'm Harry"
// #전달인자 레이블을 사용하지 않는 함수선언
func sendMessage(_ name: String) -> String{
return "Hello \(name)!"
}
//사용
sendMessage("Harry") //"Hello Harry!"
// #가변매개변수 사용하는 함수선언
// 함수마다 가변매개변수는 하나만 가질 수 있음
func sendMessage(me: String, friends: String...) -> String{
return "Hello \(friends)! I'm \(me)"
}
//사용
//가변 매개변수의 값이 배열의 형태로 저장되는 것을 볼 수 있다.
sendMessage(me: "Harry", friends: "Sue", "Justin") //"Hello["Sue", "Justin"]! I'm Harry"
End