
ReflectionFunction::invoke를 사용하여 함수를 호출할 때, 인자는 다음과 같은 형식으로 전달해야 합니다.
- 인자의 타입이 일치해야 합니다.
- 인자의 개수와 함수의 매개변수 개수가 일치해야 합니다.
인자를 전달하지 않았을 때의 오류는 다음과 같이 처리할 수 있습니다.
- 인자가 없을 때, 기본값이 있는 매개변수를 사용할 수 있습니다.
- 인자가 없을 때, Optional 타입의 매개변수를 사용할 수 있습니다.
인자를 전달하지 않았을 때의 오류를 처리하는 예제는 다음과 같습니다.
#hostingforum.kr
swift
func add(a: Int, b: Int = 0) -> Int {
return a + b
}
let reflectionFunction = Mirror(reflecting: add)
let arguments: [Any] = []
let result = reflectionFunction.invocation.arguments[0].call(withArguments: arguments)
print(result) // 0
인자를 전달하지 않았을 때의 오류를 처리하는 다른 예제는 다음과 같습니다.
#hostingforum.kr
swift
func add(_ a: Int?, _ b: Int?) -> Int? {
return a?.flatMap { $0 + $1 }
}
let reflectionFunction = Mirror(reflecting: add)
let arguments: [Any] = []
let result = reflectionFunction.invocation.arguments[0].call(withArguments: arguments)
print(result) // nil
ReflectionFunction::invoke를 사용하여 함수를 호출할 때, 함수의 반환값을 받는 방법은 다음과 같습니다.
- `call(withArguments:)` 메서드를 사용하여 함수를 호출하고, 반환값을 받을 수 있습니다.
- `call(withArguments:)` 메서드는 Optional 타입의 반환값을 반환합니다. 반환값이 nil이면 함수 호출 중 오류가 발생한 것입니다.
인자를 전달하여 함수를 호출하고 반환값을 받는 예제는 다음과 같습니다.
#hostingforum.kr
swift
func add(a: Int, b: Int) -> Int {
return a + b
}
let reflectionFunction = Mirror(reflecting: add)
let arguments: [Any] = [1, 2]
let result = reflectionFunction.invocation.arguments[0].call(withArguments: arguments)
print(result) // 3
인자를 전달하여 함수를 호출하고 반환값을 받는 다른 예제는 다음과 같습니다.
#hostingforum.kr
swift
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
let reflectionFunction = Mirror(reflecting: add)
let arguments: [Any] = [1, 2]
let result = reflectionFunction.invocation.arguments[0].call(withArguments: arguments)
print(result) // 3
2025-04-04 02:15