[SWIFT] function 이해하기

Yeongsan Son·2021년 7월 29일
0

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")
  • 이름을 출력하는 함수 (external name없이 사용)
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)
  • overloading: 같은 함수의 이름을 갖지만 인풋과 아웃풋이 다른 경우에 사용
    • 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)
profile
매몰되지 않는 개발자가 되자

0개의 댓글