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

AutoIT技术疑问:为何调用函数无法向数组插入元素?

问题解决:AutoIt数组参数修改不生效的原因及修复

核心原因

AutoIt中数组默认按值传递参数,Bar函数里操作的是原数组$Baz的副本,修改只会作用在副本上,不会影响外部的原数组。

修复方案

方法一:在函数参数声明时用ByRef指定引用传递

修改Bar函数的参数定义,添加ByRef关键字,让函数直接操作原数组的内存地址:

Func Foo ()
    Local $Baz[100] = []
    Call("Bar", $Baz)
    MsgBox(0, "", $Baz[0])
    Return
EndFunc

Func Bar (ByRef $_Array)
    $_Array[0] = 1
    Return
EndFunc

方法二:调用Call时指定ByRef传递参数

如果不想修改函数定义,也可以在调用Call时给参数加上ByRef:

Func Foo ()
    Local $Baz[100] = []
    Call("Bar", ByRef $Baz)
    MsgBox(0, "", $Baz[0])
    Return
EndFunc

Func Bar ($_Array)
    $_Array[0] = 1
    Return
EndFunc

补充说明

  • ByRef的作用是让参数按引用传递,函数内部对参数的修改会直接同步到外部变量
  • 推荐使用方法一,因为函数声明明确标注了参数的传递方式,可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:45:38