Function 带有可选/默认参数的AutoIt v3函数

Function 带有可选/默认参数的AutoIt v3函数,function,parameters,autoit,Function,Parameters,Autoit,我试图调用一个声明如下的函数: Func doCall($indexNumber = "1") MsgBox(0, "Test", $indexNumber) EndFunc Func doCall($indexNumber = "1") If $indexNumber = '' Then $indexNumber = '1' MsgBox(0, "Test", $indexNumber) EndFunc 但是我得到一个关于$indexNumber变量在使用前未声明的错误。

我试图调用一个声明如下的函数:

Func doCall($indexNumber = "1")
MsgBox(0, "Test", $indexNumber) 
EndFunc
Func doCall($indexNumber = "1")
    If $indexNumber = '' Then $indexNumber = '1'
    MsgBox(0, "Test", $indexNumber)
EndFunc
但是我得到一个关于
$indexNumber
变量在使用前未声明的错误。我希望能够调用
doCall()
而不使用
$indexNumber
参数,
MsgBox
应该显示
1
,对吗


这能做到吗?或任何其他解决方案?

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

doCall()

Func doCall($indexNumber = "1")
  MsgBox(0, "Test", $indexNumber) 
EndFunc
编辑 尝试添加处理程序函数:

Func doCallHandler()
  doCall()
EndFunc
然后,执行以下操作:

GUICtrlSetOnEvent($Button1, "doCallHandler")

如果您声明了变量,就不会有任何问题。将其添加到脚本顶部附近(在引用
$indexNumber
之前):


编辑

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

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

我是通过如下按钮调用我的函数的
GUICtrlSetOnEvent($Button1,“doCall”)
。这有什么区别吗?我也可以在单独的项目文件中测试这个,但一旦我进入脚本,它就不起作用了。嗯,它消除了错误,但是消息框是空的。@aphoria-我能够重现这个问题。不确定为什么在使用
GUICtrlSetOnEvent
时它不会拾取默认值。我用其他方法编辑了我的答案。我相信事件方法不能有参数。我知道你不能传递参数,但我认为函数定义中的任何可选参数仍将获得默认值。谢谢,但更新仍然无法工作,因为AutoIt首先在此行崩溃
Func doCall($indexNumber=“1”)
,它未达到$indexNumber值检查。