다음과 같이 함수를 상수 또는 변수에 할당하는 것이 가능.
func inchesToFeet(inches: Float) -> Float {
return inches * 0.0833333
}
//1
let toFeet = inchesToFeet
함수를 호출하려면 원래의 함수 이름 대신에 상수 이름을 이용하여 호출 가능하다.
//1
var result = toFeet(10)
어떤 함수에 다른 함수를 인자로 넘겨주거나 함수의 반환 값으로 함수를 넘겨줄 수 있다.
위 함수는 Float형 매개변수, Float형 결과를 반환하기 때문에 함수의 데이터 타입(자료형)
(Float) → Float // (매개변수형) → 리턴형
Int와 Double형을 매개변수로 받아서 String을 반환하는 함수의 데이터 타입도 가능.
(Int, Double) -> String //(매개변수형, 매개변수형) -> 리턴형
매개변수로 함수를 받으면, 함수를 받게 될 함수는 함수의 데이터 타입을 선언함.
func addTwoInteger(x: Int, y: Int) -> Int {
return (x+y)
}
swift 함수는 1급 객체이므로 변수에 저장
할 수 있다.
func inchesToFeet(inches: Float) -> Float {
return inches * 0.0833333
}
func inchesToYards(inches: Float) -> Float {
return inches * 0.0277778
}
//위 함수를 매개변수에 저장
let toFeet = inchesToFeet
let toYards = inchesToYards
swift 함수는 1급 객체이므로 매개변수
로 전달할 수 있다.
func outputConversion(convertFunc: (Float) -> Float, value: Float) {
let result = convertFunc(value)
print("Result = \(result)")
}
위의 outputConversion 함수를 호출할 때 선언된 데이터 타입과 일치하는 함수를 전달해보자.
- 매개변수로 적절한 변환 함수를 전달하면 인치를 피트 또는 야드로 변환하기 위하여 동일한 함수가 호출될 수 있다.
outputConversion(convertFunc: toYards, value: 10) //야드로 변경하는 inchesToYards 함수 호출
outputConversion(convertFunc: toFeet, value: 10) //피트로 변경하는 inchesToFeet 함수 호출
Swift 함수는 1급 객체이므로 리턴값으로 사용
할 수 있다.
- 반환 타입으로 함수의 타입을 선언하면 함수도 반환될 수 있다.
- 다음 함수는 Blooean 매개변수의 값에 따라 toFeet 함수 또는 toYards 함수를 반환
func deciderFunction( feet: Bool) -> (Float) -> Float {
if feet {
return toFeet
} else {
return toYards
}
}