swift에서 함수는 func <함수명>(arg1:type, arg2:type, ...){statement}
의 형태를 갖는다.
중요한건 함수의 반환값이 있을 경우 형태가 좀 다르다. 이는 다음과 같다.
func <함수명>(arg1:type, arg2:type,...) -> <return type>{statment}
함수의 반환값이 있는 경우, 반환값의 타입도 설정해주고 이 함수는 반환값이 있다는 표시로 화살표를 사용한다.
그럼, swift에서 함수의 사용 예를 살펴보겠다.
func printName(firstName: String, lastName: String) {
print("나의 이름은 \(firstName) \(lastName)")
}
printName(firstName: "David", lastName: "Son")
printName(firstName: "chris", lastName: "evans")
func printName(_ firstName: String, _ lastName: String) {
print("나의 이름은 \(firstName) \(lastName)")
}
printName("David", "Son")
printName("chris", "evans")
func printName(_ firstName: String, _ lastName: String) -> String {
let fullName = "\(firstName) \(lastName)"
return fullName
}
let son = printName("David", "Son")
let capt = printName("chris", "evans")
print(son)
print(capt)
price
에 기본값 1500을 설정, price
를 인자로 넣어 주지 않으면 기본값으로 함수 실행func printTotalPriceWithDefaultValue(price: Int = 1500, count: Int) {
print("Total Price: \(price * count)")
}
printTotalPriceWithDefaultValue(count: 20)
nil
: 값이 없다는 의미func printName(firstName: String, lastName: String) {
print("나의 이름은 \(firstName) \(lastName)")
}
func printName(firstName: nil, lastName: String) {
print("나의 이름은 \(lastName)")
}
printName(firstName: nil, lastName: "Son")
printName(firstName: "chris", lastName: "evans")
in-out
파라미터var value = 3
func incrementAndPrint(_ value: inout Int) { // parameter는 상수취급되기 때문에, In-out 키워드 사용
value += 1
print(value)
}
incrementAndPrint(&value)
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
func multiple(_ a: Int, _ b: Int) -> Int {
return a * b
}
func divide(_ a: Int, _ b: Int) -> Int {
return a / b
}
func printResult(_ function:(Int, Int) -> Int, _ a: Int, _ b: Int) {
let result = function(a,b)
print(result)
}
printResult(add, 4, 10)
printResult(subtract, 50, 10)
printResult(multiple, 3, 5)
printResult(devide, 100, 25)