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

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

本帖最后由 fenhanxue 于 2013-11-26 19:30 编辑

例如:

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

Dim $a =
anyfunc($a)

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

anyfunc()

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

因为在实际代码里,anyfunc()这个函数使用频率比较频繁,$x为一个组数,就想着能不能调用anyfunc()的时候,直接在()里面输入数组,却律师不行哇

iori2882 发表于 2013-11-26 17:34:23

例如:

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

...
fenhanxue 发表于 2013-11-26 16:12 http://www.autoitx.com/images/common/back.gif

我也不太懂 你是不是要这样的?#include <Array.au3>
$avArray1=_arr()
MsgBox(0,0,$avArray1)
Func _arr()
Local $avArray = [ _
      , _
      , _
      , _
      , _
      ]
                Return($avArray)
        endfunc       

iori2882 发表于 2013-11-26 17:48:41

例如:

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

...
fenhanxue 发表于 2013-11-26 16:12 http://www.autoitx.com/images/common/back.gif

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


Local $avArray

$avArray = "JPM"
$avArray = "Holger"
$avArray = "Jon"
$avArray = "Larry"
$avArray = "Jeremy"
$avArray = "Valik"
$avArray = "Cyberslug"
$avArray = "Nutster"
$avArray = "JdeB"
$avArray = "Tylo"

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

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

endfunc

fenhanxue 发表于 2013-11-26 18:30:43

回复 3# iori2882

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

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


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

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

#include <Array.au3>

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

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

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

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

afan 发表于 2013-11-26 18:48:23

回复 4# fenhanxue


    自定义函数就是干这事的,你需要自己在函数内部处理需要的动作

afan 发表于 2013-11-26 18:57:39

按需自行处理#include <Array.au3>

Dim $a =
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

fenhanxue 发表于 2013-11-26 19:29:09

回复 6# afan


    3x

ak47gglllk 发表于 2013-12-4 15:43:00

额,非常感谢,回复赚银子

ncxj 发表于 2015-10-14 23:53:29

anyfunc();这样在anyfunc 后面,直接输入会提示出错
这个显然不靠谱

heroxianf 发表于 2015-11-18 01:44:51

学习一下,自己还需要多练习。
页: [1]
查看完整版本: 自定义函数的参数,能不能直接输入数组而不是变量?[已解决]