我目前正在Swift中实现this blog post about vms and compilers in Python。我在这里遇到了问题:
我在Any
中有一个函数。我在[Any]
中有其论点。我想在不知道它是什么参数的情况下调用此函数。在Python帖子中,由于Python是动态的,所以很简单,但是在Swift中,我认为这是不可能的。您有什么实现方式吗?
let numberOfArgs: Int = try intify(instruction.arg)
let arguments: [Any] = (0 ..< numberOfArgs).compactMap { _ in
return (stack.pop() as? Instruction)?.arg
}
let function: Any = try popVal(&stack)
function
是一个Swift闭包。例如(Int, Int) -> Int
,(String, (Bool, Date) -> Date) -> Float
最后,我想用function
来呼叫arguments
答案 0 :(得分:1)
一种实现方法是将函数包装在setw()
类型的闭包中。然后在闭合中,解压缩参数,将其转换为正确的类型并调用该函数。最后,将结果转换为setfill()
:
([Any]) -> Any
输出:
Any