주말에 혼자 회사 나오는 거... 오히려 좋아..
함수는 작업의 가장 작은 단위이자 코드의 집합이다.
사용하는 가장 큰 이유는 반복적인 작업을 좀 더 빠르게 처리하기 위해 작업을 한다.
func sum(sumA: Int, sumB: Int) -> Int {
return sumA + sumB
}
sum(sumA: Int, sumB: Int)
함수를 작성하고 파라미터에 내가 넣고자 하는 데이터 타입을 넣어주고 함수를 호출할 땐 파라미터에 들어가는 값들의 타입도 함께 넣어서 호출해준다.
func printName() -> Void{
...
}
func printName() {
...
}
반환 값이 없는 함수는 반환 타입에 Void를 적어주거나 생략해주면 된다.
func greeting(friend: String, me: String = "Duhyeon") {
print("Hello, \(friend)! I'm \(me)")
}
greeting(friend: "James")
// Hello, James! I'm Duhyeon
기본값을 지정해준다면 greeting 함수를 호출할 때 friend의 값만 넣어주면 된다.
func sendMessage(from myName: String, to name: String )-> String{
return "hello, \(name)! I'm \(myName)"
}
sendMessage(from: "Duhyeon", to: "James")
전달 인자 레이블이란 함수를 정의할 때 매개변수를 정의하면 매개변수 이름과 전달인자 레이블 같은 이름으로 사용할 수 있지만 전달인자 레이블을 별도로 지정하면 함수 외부에서 매개변수의 역할을 좀 더 명확히 할 수 있다.
위 코드를 보면 전달인자 레이블을 지정해줘서 sendMessage를 호출 할 때 좀 더 명확한 코드를 볼 수 있는 장점이 있다.
전달인자 레이블을 사용하려면 함수 정의에서 매개변수 이름 앞에 한 칸을 띄운 후 전달인자 레이블을 지정한다.
만약 전달 인자 레이블을 사용하고 싶지 않다면 ?
func sendMessage(_ myName: String, _ name: String )-> String{
return "hello, \(name)! I'm \(myName)"
}
sendMessage("Duhyeon", "James")
전달 인자 레이블 대신 "_" 와일드 카드 식별자를 붙혀서 사용하면 된다.
swift는 매개 변수의 값이 몇개가 들어올 지 모를 때 가변 매개 변수를 사용할 수 있다. 가변 매개 변수는 0개 이상의 값을 받아올 수 있고, 가변 매개 변수로 들어온 값은 배열처럼 사용할 수 있다.
물론 함수마다 가변 매개 변수는 하나만 가질 수 있다.
func sendMessage(me: String, friends: String... )-> String{
return "hello, \(friends)! I'm \(me)"
}
sendMessage(me:"Duhyeon", friends: "James", "Albert", "Stella")
// "hello, ["James", "Albert", "Stella"]! I'm Duhyeon"
여러개의 값이 들어가는 String 타입 뒤에 ...으로 표기해주면 가변 매개 변수가 된다. 이렇게 작성해준다면 여러개의 문자열을 넘겨 줄 수 있다.