找回密码
 加入
搜索
查看: 4909|回复: 9

[AU3基础] 自定义函数的参数,能不能直接输入数组而不是变量?[已解决]

  [复制链接]
发表于 2013-11-26 16:12:22 | 显示全部楼层 |阅读模式
本帖最后由 fenhanxue 于 2013-11-26 19:30 编辑

例如:

我知道正常情况下,这样写,是可以的:
#include <Array.au3>

Dim $a[2] = [1,2]
anyfunc($a)

Func anyfunc($x)
        _ArrayDisplay($x)
EndFunc
那么,我想这样写,貌似会提示出错:
#include <Array.au3>

anyfunc([1,2])

Func anyfunc($x)
        _ArrayDisplay($x)
EndFunc
不知道是为什么?为什么会出错,应该怎么改?

因为在实际代码里,anyfunc()这个函数使用频率比较频繁,$x为一个组数,就想着能不能调用anyfunc()的时候,直接在()里面输入数组,却律师不行哇
发表于 2013-11-26 17:34:23 | 显示全部楼层
例如:

我知道正常情况下,这样写,是可以的:那么,我想这样写,貌似会提示出错:不知道是为什么?

...
fenhanxue 发表于 2013-11-26 16:12


我也不太懂 你是不是要这样的?
#include <Array.au3>
$avArray1=_arr()
MsgBox(0,0,$avArray1[0][0])
Func _arr()
Local $avArray[5][3] = [ _
        [5, 20, 8], _
        [4, 32, 7], _
        [3, 16, 9], _
        [2, 35, 0], _
        [1, 19, 6]]
                Return($avArray)
        endfunc        
发表于 2013-11-26 17:48:41 | 显示全部楼层
例如:

我知道正常情况下,这样写,是可以的:那么,我想这样写,貌似会提示出错:不知道是为什么?

...
fenhanxue 发表于 2013-11-26 16:12


要不就是这样?
#include <Array.au3>


Local $avArray[10]

$avArray[0] = "JPM"
$avArray[1] = "Holger"
$avArray[2] = "Jon"
$avArray[3] = "Larry"
$avArray[4] = "Jeremy"
$avArray[5] = "Valik"
$avArray[6] = "Cyberslug"
$avArray[7] = "Nutster"
$avArray[8] = "JdeB"
$avArray[9] = "Tylo"

_cc($avArray,"啊啊啊啊啊啊")

Func _cc($x,$y)
        
        _ArrayAdd($x,$y)
        _ArrayDisplay($x, "$avArray 添加后的数据 _ArrayAdd()")

endfunc
 楼主| 发表于 2013-11-26 18:30:43 | 显示全部楼层
回复 3# iori2882

就是,我想不用先定义数组,再使用函数,
而是想直接使用函数,在函数的参数里直接输入数组

也就是:
;;;;;;;;;;;;;(一)  对于不是数组的变量,我可以这样写


anyfunc("我不需要提前,直接在这里输入具体的参数,就会显示")    ; 

Func anyfunc($x)
       MsgBox(0,"",$x)
EndFunc
   
;;;;;;;;;;;;;(二)而对于是数组的变量,貌似我直接输入会提示出错,例如:

#include <Array.au3>

anyfunc([1,2]);这样在anyfunc 后面,直接输入[1,2]会提示出错

Func anyfunc($x)
        _ArrayDisplay($x)
EndFunc

;;;;;;;;;;;;;(三)必须这样改才不会提示出错
#include <Array.au3>
din $a[2] = [1,2]
anyfunc($a);先把[1,2]传给一个变量,例如$a,再把$a 填到 anyfunc 里,才会正常运行

Func anyfunc($x)
        _ArrayDisplay($x)
EndFunc
发表于 2013-11-26 18:48:23 | 显示全部楼层
回复 4# fenhanxue


    自定义函数就是干这事的,你需要自己在函数内部处理需要的动作
发表于 2013-11-26 18:57:39 | 显示全部楼层
按需自行处理
#include <Array.au3>

Dim $a[2] = [1, 2]
anyfunc($a)
anyfunc('00a,222,33')

Func anyfunc($x, $sFg = ',')
        If IsArray($x) Then
                _ArrayDisplay($x)
                Return
        EndIf
        Local $a = StringSplit($x, $sFg, 3)
        _ArrayDisplay($a)
EndFunc   ;==>anyfunc
 楼主| 发表于 2013-11-26 19:29:09 | 显示全部楼层
回复 6# afan


    3x
发表于 2013-12-4 15:43:00 | 显示全部楼层
额,非常感谢,回复赚银子
发表于 2015-10-14 23:53:29 | 显示全部楼层
anyfunc([1,2]);这样在anyfunc 后面,直接输入[1,2]会提示出错
这个显然不靠谱
发表于 2015-11-18 01:44:51 | 显示全部楼层
学习一下,自己还需要多练习。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 22:20 , Processed in 0.082041 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表