[Swift] 함수(Functions)

팔랑이·2023년 6월 9일
post-thumbnail

23-05-16


Swift에서 function을 정의하는 방법

사람 이름을 input값으로 받고 greeting 값을 return하는 함수.

func greet(person: String) -> String{
    let greeting = "Hello, " + person + "!~"
    return greeting
}

입력값의 형식 지정 (person: String)

화살표 '->'를 이용해 return값의 형식을 지정 (-> String())

정의한 함수를 호출 (call)

print(greet(person: "팔랑이"))
// Prints "Hello, 팔랑이~!"

함수를 짧게 만드려면 greeting 선언하지 않고 return에 바로 문자열 작성

func greetAgain(person: String)-> String{
    return "헬로우, " + person + "!~"
}

안에 인수가 없다면 그대로 반환

func sayHelloWorld() -> String{
    return "Hello, World!"
}

return 생략 가능

func greeting(for person: String) -> String{
    "하이, " + person + "!~"
}
print(greeting(for: "빵가루"))
// Prints "하이, 빵가루!~"

출력값을 여러개 가진 함수 - array

array 안에서 최소값과 최대값을 찾는 함수

func minMax(array: [Int]) -> (min: Int, max: Int) {
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        // array.count는 array의 인덱싱 번호
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}
  • 두개의 int값을 가진 튜플을 반환함
  • return되는 값 (currentMin, currentMax) 이 각각 (min: Int, max: Int)에 대응함

다음과 같이 .을 이용해 값을 출력 가능

let bounds = minMax(array:[8, -6, 2, 109, 3, 71])
print("min is \(bounds.min) and max is \(bounds.max)")
// Prints "min is -6 and max is 109"

Argument Labels

매개변수 이름 앞에 인자 이름 (argument label)을 붙일 수 있다.

func someFunction(arglabel parameterName: Int){
    // arglabel을 통해 parameter를 설명하는 용도
}
func greet(person: String, from hometown: String) -> String{
    return "Hello, \(person)! Glad U visit from \(hometown)."
}
print(greet(person:"팔랑이", from:"서울"))
//Prints "Hello, 팔랑이! Glad U visit from 서울."

Argument Label의 생략

func someFunction(_ firstParameterName: Int, secondParametername: Int) {
    
}
someFunction(1, secondParameterName: 2)

매개변수가 인자 이름을 지니고 있다면, 함수를 호출할 때 반드시 붙여줘야 한다.

가변 매개변수 (Variadic Parameters)

'...'을 활용해 0개 이상의 값들을 가변매개변수로 지정할 수 있다. 함수를 호출할 때 다양한 값을 받을 수 있도록 한다.

func averge(_ numbers: Double...) -> Double {
    var total: Double = 0
    for number in numbers {
        total += number
    }
    return total / Double(numbers.count)
}

average(1, 2, 3, 4, 5)
// 3.0
average(3, 8.25, 18.75)
// 10.0

array 자료형인 [Double] 과 Double... 는 다르니 주의.


🌏 참고사이트
Swift Language Guide

profile
정체되지 않는 성장

0개의 댓글