Dev/Swift

Swift: 함수를 매개변수와 리턴값으로 사용(first class citizen)

두넌 2023. 5. 14.

DAY 10

함수(function)를 매개변수와 리턴값으로 사용

 

함수를 자료형으로 사용


스위프트는 함수를 데이터 타입처럼 처리할 수 있다

다음과 같이 함수를 상수 또는 변수에 할당하는 것이 가능

func inchesToFeet(inches: Float) -> Float {
    return inches * 0.0833333
}
let toFeet = inchesToFeet

var tmp = toFeet(10)
print(tmp)

var tmp2 = inchesToFeet(inches: 10)
print(tmp2)

함수 호출시 toFeet(10) 처럼 외부 매개변수 명을 명시하지 않아야 작동하며 상수 이름을 이용하여 호출이 가능함

어떤 함수에 다른 함수를 인자로 넘겨주거나, 함수의 반환 값으로 함수를 넘겨줄 수 있음

Swift 함수는 1급 객체(first class object) 또는 1급 시민(first class citizen)

다음 조건을 충족하는 객체를 1급 객체(first class object) 라고 한다

  1. 변수에 저장할 수 있다
  2. 매개변수로 전달할 수 있다
  3. 리턴값으로 사용할 수 있다

 

함수를 매개변수로 사용


func outputConversion(converterFunc: (Float) -> Float, value: Float) {
    let result = convertFunc(value)
    print("Result = \(result)")
}

outputConversion 의 type

((Float) -> Float, Float) -> ()

 

함수를 리턴값으로 사용


func decideFunction(feet: Bool) -> (Float) -> Float {
    if feet {
        return toFeet
    } else {
        return toYards
    }
}

feet Boolean 변수가 true이면 toFeet 함수 반환하고 false이면 toYard 반환

댓글