return如何返回多个变量
在自定义函数中要返回多个变量func bbbb()
$a
$b
$c
endfunc
怎么用return来返回,是不是RETURN一次只能返回一个变量?
[ 本帖最后由 leewger 于 2008-7-25 15:19 编辑 ] 函数的参数传递方式有两种,值传递和址传递
所谓值传递,就是参数在传递时仅仅是传递的参数的值,举个简单的例子,例如下属程序段:
Local $a,$b,$c
$a=1
$b=2
$c=0
_Test($a,$b)
$c=$a+$b
MsgBox(0,"Only a Test",$c)
Func _Test($x,$y)
$x=$x+1
$y=$y+1
EndFunc
_Test是一个没有返回值的简单函数,主程序段中调用_Test($a,$b),这时$a的值传递给$x,$b的值传递给$y,这时对$x和$y的任何更改操作只和$x和$y有关,无论怎么对$x和$y进行更改,例如_Test中的$x和$y都自加1,都与$a和$b无关
运行这个程序后,$c的值为3
值传递也是我们普遍使用的方法,下面说一下址传递
所谓址传递,简单说是把一个变量的地址传给另一个变量,这就像给一个人取个小名,你喊他的大名和小名他都答应一样
看下面的这段程序:
Local $a,$b,$c
$a=1
$b=2
$c=0
_Test($a,$b)
$c=$a+$b
MsgBox(0,"Only a Test",$c)
Func _Test(ByRef $x,ByRef $y)
$x=$x+1
$y=$y+1
EndFunc
这段程序中 _Test的变量$x和$y前都添加了ByRef,这说明了$x和$y都是址传递。简单说,$x是$a的小名,$y是$b的小名,对$x和$y的操作相当于对$a和$b直接操作
这段程序运行后,$c的结果为5
[ 本帖最后由 skyfree 于 2008-7-25 16:45 编辑 ] 要想返回多个值
1 可以用数组
2 字符串,多个值组合成而成, (使用时需要再解析)
3 使用全局变量
[ 本帖最后由 llztt 于 2008-7-25 12:54 编辑 ] 原帖由 llztt 于 2008-7-25 12:53 发表 http://www.autoitx.com/images/common/back.gif
要想返回多个值
1 可以用数组
2 字符串,多个值组合成而成, (使用时需要再解析)
3 使用全局变量
正解。楼主的示例可以用一个数组返回。
$X=ABC()
MsgBox(0,"",$X&$X&$X)
Func ABC()
Dim $y
$y="ABVDEFG"
$Y="abcdefg"
$Y=3
Return $Y
EndFunc 明白了,谢谢 利用址传递,我们可以方便的让一个函数返回多个值
这个在其他语言中是十分常见的处理方法 以前还真没注意过BYREF这东西,经SKY介绍,了解了一下
这东西改动的是全局变量的值, 返回的变量都是已经提前声明过的。。有了这家伙,函数确实更通用了。。嘿嘿,又学一招
学过一点JAVA,没见过有这类似工作方式的东西。。所以不打算用这东西 谢谢skyfree详细通俗的讲解! 明白了,又学到一招。帮助中的确没找到 多谢SKY讲解,帮助里还真没有,学习了 学了一招,太谢谢sky拉 自定义函数 返回值 对我很有用 skyfree讲解的非常清楚,把byref帮助文件中没说清楚的地方讲的明明白白
谢谢 回复收藏,byref原来是传递地址的,帮助文档说得有点乱... 跟VB语言类似 本帖最后由 zps26 于 2016-4-16 09:57 编辑
return如何返回多个变量
函数传值与传址
页:
[1]
2