You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoHotkey V1中能否实现类的构造函数重载?

AutoHotkey V1 实现带默认参数的Timecode类构造函数

你尝试通过定义两个__New方法实现类的多方式初始化,但AutoHotkey V1不支持函数重载,同一个类中不能存在多个同名的__New方法,这就是触发"Duplicate declaration"错误的原因。

解决方案:使用单个带可选参数的__New方法

在AutoHotkey V1中,可通过为参数设置默认值来实现可选参数,从而在单个__New方法中支持两种初始化逻辑:

class timecode
{
    __New(frames, framerate := 12)
    {
        this.frameCount := frames * framerate
        this.framerate := framerate
    }
}

测试验证

使用你提供的测试代码(补充print函数的简单实现):

obj := new timecode(2)          ; 默认使用12帧/秒
print(obj)                      ; 输出 {"frameCount": 24, "framerate": 12}
obj := new timecode(2, 24)      ; 使用传入的帧率
print(obj)                      ; 输出 {"frameCount": 48, "framerate": 24}

; 模拟示例中的print功能
print(obj) {
    output := "{"""frameCount""": " obj.frameCount ", """framerate""": " obj.framerate "}"
    MsgBox % output
}

原理说明

  • 通过framerate := 12为第二个参数设置默认值,当调用构造函数时只传入frames参数,framerate会自动使用默认值12;
  • 传入两个参数时,framerate会使用你指定的值,从而实现两种初始化场景的兼容。

内容的提问来源于stack exchange,提问作者Ralf_Reddings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:05:13