ISSUE: 支持闭包的展开与捕获为闭包的变长参数
此前为了兼容,提供了基于数组的变长参数,但是这一变长参数方案太恶心了,捕获和转发都是dynamic的,没有办法做类型安全保证。
现在希望支持:
var m = (1, "Hello", 2.5);
foo(m...); // 等效于 foo(1, "Hello", 2.5)
除此之外也需要支持
var a = (1, "Hello", 2.5);
var b = (a...);
var (c, ...d) = a; // 带包展开
func foo(var msg: string, ...p) // 这是一个隐含的泛型函数声明