模拟元组/返回类元组闭包[AutoHotkey|AHK|元组|Tuple|闭包|Closure|装饰器|Decorator|批量返回]


在编写脚本时,我们有时希望以便捷的方式返回多个结果。

class Tuple {
    static Call(T*) {
        input := Array(T*)

        unpacker(&vars*) {
            if (vars.Length != input.Length)
                throw "Tuple unpacking error: " input.Length " elements expected, but " vars.Length " variables provided."
    
            for var in vars
                %var% := input[A_Index]
        }

        return unpacker
    }
}

上述代码定义了Tuple类型,并含有一个静态默认调用,接受可变参数。

你可以这样调用它:

MyFunc(a, b) {
    return Tuple(a+1, b+1)
}

temp := MyFunc(3, 6)
temp(&res_a, &res_b)

;MyFunc(3, 6)(&res_a, &res_b) ; 也可以这样。

MsgBox(res_a " " res_b)

函数MyFunc接受两个参数,并返回Tuple类型;变量temp从函数中得到闭包,并在次行为res_ares_b赋予解包结果。MsgBox打印的内容为4 7


至此,已可简略地在脚本中使用元组。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容