Swift Language
Swift의 1 등 시민으로서의 기능
수색…
소개
일등급 회원으로서의 기능이란 개체가 그렇듯이 특권을 누릴 수 있음을 의미합니다. 변수에 지정하거나 매개 변수로 함수에 전달하거나 리턴 유형으로 사용할 수 있습니다.
함수에 변수 할당하기
struct Mathematics
{
internal func performOperation(inputArray: [Int], operation: (Int)-> Int)-> [Int]
{
var processedArray = [Int]()
for item in inputArray
{
processedArray.append(operation(item))
}
return processedArray
}
internal func performComplexOperation(valueOne: Int)-> ((Int)-> Int)
{
return
({
return valueOne + $0
})
}
}
let arrayToBeProcessed = [1,3,5,7,9,11,8,6,4,2,100]
let math = Mathematics()
func add2(item: Int)-> Int
{
return (item + 2)
}
// assigning the function to a variable and then passing it to a function as param
let add2ToMe = add2
print(math.performOperation(inputArray: arrayToBeProcessed, operation: add2ToMe))
산출:
[3, 5, 7, 9, 11, 13, 10, 8, 6, 4, 102]
마찬가지로 closure
사용하여 위와 같은 결과를 얻을 수 있습니다.
// assigning the closure to a variable and then passing it to a function as param
let add2 = {(item: Int)-> Int in return item + 2}
print(math.performOperation(inputArray: arrayToBeProcessed, operation: add2))
함수를 다른 함수에 인수로 전달하여 고차 함수를 생성합니다.
func multiply2(item: Int)-> Int
{
return (item + 2)
}
let multiply2ToMe = multiply2
// passing the function directly to the function as param
print(math.performOperation(inputArray: arrayToBeProcessed, operation: multiply2ToMe))
산출:
[3, 5, 7, 9, 11, 13, 10, 8, 6, 4, 102]
마찬가지로 closure
사용하여 위와 같은 결과를 얻을 수 있습니다.
// passing the closure directly to the function as param
print(math.performOperation(inputArray: arrayToBeProcessed, operation: { $0 * 2 }))
다른 함수의 리턴 타입으로서의 기능
// function as return type
print(math.performComplexOperation(valueOne: 4)(5))
산출:
9
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow