fjw18 发表于 2011-3-20 17:30:13

如何让自定义函数返回多个值,并且返回值可以赋值给变量?

本帖最后由 fjw18 于 2011-3-20 18:11 编辑

我的意思是自定义一个函数,这个函数可以返回多个值,并且这些值可以赋值给外部变量。
就像软件集成的WinGetPos函数一样,可以返回多个数组值,谢谢!

lynfr8 发表于 2011-3-20 20:08:32

自定义函数返回多个值示例
#Include <WinAPI.au3>
$Get = WinGetEX("输入窗口标题",'')
MsgBox(0, "鼠标状态 (X坐标,Y坐标", $Get & ",                                        " & $Get)
MsgBox(0, "活动窗口状态 (宽度,高度):", $Get & ",                                    " & $Get)
MsgBox(0, "活动窗口文本", $Get& "                                    "&$Get)
Func WinGetEX($x,$y)
      Dim $EX
$EX ='自定义数组文字'
$EX =_WinAPI_GetMousePosX()
$EX =_WinAPI_GetMousePosy()
$EX =_WinAPI_GetWindowWidth(WinGetHandle($x,$y))
$EX =_WinAPI_GetWindowHeight(WinGetHandle($x,$y))
$EX =_WinAPI_GetWindowText(WinGetHandle($x,$y))
Return $EX
EndFunc


更详细资料请参考帮助文档:Func...Return...EndFunc
或 return如何返回多个变量

love5173 发表于 2011-3-20 20:32:09

没看懂你的意思,貌似你知道开始运行一遍你的这个WinGetEX($x,$y)
定义 一下全局变量
不需要返回什么 你的函数变量就都被赋值了啊
不用返回的
是我没理解你的意思吗

love5173 发表于 2011-3-20 20:34:21

另外 你确定你这个函数能运行起来吗?
我怎么看到那么多不规范的地方呢

3mile 发表于 2011-3-20 20:53:34

没看懂你的意思,貌似你知道开始运行一遍你的这个WinGetEX($x,$y)
定义 一下全局变量
不需要返回什么 你的 ...
love5173 发表于 2011-3-20 20:32 http://www.autoitx.com/images/common/back.gif
这是在说中文吗?让人百思不得其解啊.
貌似机器翻译的对白.

lynfr8 发表于 2011-3-20 21:15:23

另外 你确定你这个函数能运行起来吗?
我怎么看到那么多不规范的地方呢
love5173 发表于 2011-3-20 20:34 http://www.autoitx.com/images/common/back.gif


呵呵
你测试一下就知道能否运行了
另外
在下请教一下您:代码哪些地方有不规范?

republican 发表于 2011-3-20 21:18:03

回复 6# lynfr8

有啊~~Dim 改为 Local {:face (356):}

love5173 发表于 2011-3-20 21:44:04

请来解决楼主的问题,不要拿我说事可以吗
我看帖子的时候不知道怎么一下就看见2楼的函数了,发现不需要返回什么
至于说不规范,我想是我表达有误,因为输出效果看起来不美观
因为是错把2楼看成1楼 函数没测试,我的失误

3mile 发表于 2011-3-20 21:47:26

回复 8# love5173
呵呵,原来如此.
这就难怪了.SORRY

lynfr8 发表于 2011-3-20 22:08:51

回复 9# 3mile


    一笑泯恩仇啦{:face (356):}
以后大家看帖都要认真

lynfr8 发表于 2011-3-20 22:12:04

请来解决楼主的问题,不要拿我说事可以吗
我看帖子的时候不知道怎么一下就看见2楼的函数了,发现不需要返回 ...
love5173 发表于 2011-3-20 21:44 http://www.autoitx.com/images/common/back.gif


   我是故意打过几个空格的,否则标题看不完整
   测试就得再费力气对比代码才理解输出的结果
   至于那个Dim,呵呵....谢谢7楼提醒。

love5173 发表于 2011-3-20 22:18:20

我是故意打过几个空格的,否则标题看不完整
   测试就得再费力气对比代码才理解输出的结果
   至 ...
lynfr8 发表于 2011-3-20 22:12 http://www.autoitx.com/images/common/back.gif

你们都是高手,本来我也是热心肠,想多帮人的,结果因为不仔细犯错,希望以后能得到大家的帮助,我主要是着急赚查看权限,sorry

happytc 发表于 2011-3-20 22:34:51

自定义函数返回多个值示例



更详细资料请参考帮助文档:Func...Return...EndFunc

lynfr8 发表于 2011-3-20 20:08 http://www.autoitx.com/images/common/back.gif

这点我还真不清楚。au3是否跟C/C++一样,返回的名空间外的数组变量(这里是返回的局域变量数组),是否存在隐在的问题。反正在C里,这样返回肯定会在特别情况下出问题的。当然把$EX数组设为全局变量肯定没有问题。一直想问这样的问题呢

fjw18 发表于 2011-3-21 09:02:22

谢谢各位热心的帮助,我现在明白了,我看了帮助了,不过,真的没有看太清楚,现在我明白了,其实就是这样的:
定义函数,定义数组,给数组赋值,返回数组,最后把函数值赋值给数组。

netegg 发表于 2011-3-21 11:05:51

func function( , $itype)
switch $istyle
   case 1
   return $ret
   case 2
.....
endswitch
endfunc
$ret可以定义为数组,返回就是了
页: [1]
查看完整版本: 如何让自定义函数返回多个值,并且返回值可以赋值给变量?