【问题标题】:AutoIt v3 function with optional/default parameter带有可选/默认参数的 AutoIt v3 函数
【发布时间】:2011-11-06 16:13:22
【问题描述】:

我正在尝试调用这样声明的函数:

Func doCall($indexNumber = "1")
MsgBox(0, "Test", $indexNumber) 
EndFunc

但我收到一个关于 $indexNumber 变量在使用前未声明的错误。我也希望能够在没有$indexNumber 参数的情况下调用doCall()MsgBox 应该显示1,对吧?

这可以做到吗?还是其他解决方案?

【问题讨论】:

    标签: function parameters autoit


    【解决方案1】:

    我将它放入一个文件并成功运行...它显示了一个带有 1 的消息框。

    doCall()
    
    Func doCall($indexNumber = "1")
      MsgBox(0, "Test", $indexNumber) 
    EndFunc
    

    编辑

    尝试添加处理函数:

    Func doCallHandler()
      doCall()
    EndFunc
    

    然后,这样做:

    GUICtrlSetOnEvent($Button1, "doCallHandler")
    

    【讨论】:

    • 我正在从像 GUICtrlSetOnEvent($Button1,"doCall") 这样的按钮调用我的函数。这有什么区别吗?我也可以在单独的项目文件中对此进行测试,但是一旦我进入我的脚本,它就不会了。
    【解决方案2】:

    如果你声明你的变量,你不应该有任何问题。在脚本顶部附近添加此内容(在引用 $indexNumber 之前):

    Global $indexNumber
    

    编辑

    我不确定为什么在使用GUICtrlSetOnEvent 时没有选择默认值。作为一种解决方法,请尝试像这样修改您的函数:

    Func doCall($indexNumber = "1")
        If $indexNumber = '' Then $indexNumber = '1'
        MsgBox(0, "Test", $indexNumber)
    EndFunc
    

    【讨论】:

    • 这对我不起作用。好吧,它摆脱了错误,但消息框是空的。
    • @aphoria - 我能够重现该问题。不知道为什么在使用GUICtrlSetOnEvent 时它不会选择默认值。我用其他东西编辑了我的答案。
    • 我相信事件方法不能有参数。
    • 我知道你不能传递参数,但我会认为函数定义中的任何可选参数仍然会获得它们的默认值。
    • 谢谢,但更新仍然无法工作,因为 AutoIt 首先在此行崩溃Func doCall($indexNumber = "1"),它没有达到 $indexNumber 值检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多