3
我试图在编译时评估一个函数的签名。给定一个函数,我想获得Type
。从方法签名获取arg类型(镜像/反射/自检?)
例如:
func f(a: Int, b: Int) -> Int{
return 1
}
let y = Mirror(reflecting: f)
let types = y.subjectType
print(types)
我回去:
"(Int, Int) -> Int"
这是我以字符串形式need--!我需要他们的类型形式。意图用法:
let unknownA: AnyObject = 1
let unknownA: AnyObject = 2
// The casts (here 'Int') are derived from the mirror above
f(a: Int(unknownA), b: Int(unknownB))
编辑:哈哈!在看起来像整整一天的挖掘之后,我发现了this宝石。当我有它的工作时,将发布一个工作示例。
多数民众赞成至于我为好。使用任意数量的参数处理函数不会很顺利,但我会继续。谢谢! – Damouse
这非常有创意,但我们真的需要真实的反思,有些人认为Swift 4会来。 – clearlight