找回密码
 加入
搜索
查看: 3235|回复: 12

[AU3基础] @NumParams 宏如何使用?

  [复制链接]
发表于 2011-7-14 10:17:12 | 显示全部楼层 |阅读模式
@NumParams使用方法给个例子?
发表于 2011-7-14 10:45:17 | 显示全部楼层
Func Test($flag)
If 1==$flag Then msgbox(0,1,1)
return @NumParams
EndFunc
$value = Test(1)
Msgbox(0,3,$value)
 楼主| 发表于 2011-7-14 14:40:43 | 显示全部楼层
回复 2# yarsye


    差不多了解用法了,不过这个宏好像没什么用啊,至少目前没发现
发表于 2011-7-14 20:15:18 | 显示全部楼层
很有用的
特别当一个自定义函数有些是赋了初值的,这样可以知道某次函数调用时,倒底用了几个参数

Func Test($flag, $aa =2)
        If 1==$flag Then msgbox(0,1,1)
        return @NumParams
EndFunc
$value = Test(1, 3)
$Val = Test(1)
Msgbox(0,3,$value)
Msgbox(0,0,$val)
 楼主| 发表于 2011-7-14 23:47:28 | 显示全部楼层
回复 4# happytc


    二楼的代码我已经测试过你这样的代码了,但是我不知道在实际应用中,知道函数中用了几个参数有

什么用,诺想到,举个具体点儿的实例?
发表于 2011-7-14 23:55:41 | 显示全部楼层
功能大概和函数重载差不多 参数不同处理方法不同
 楼主| 发表于 2011-7-15 17:17:09 | 显示全部楼层
回复 6# lainline


   用实例说话
 楼主| 发表于 2011-7-21 15:45:34 | 显示全部楼层
哈~我终于发现了@NumParams  在实际运用中的意义!!
发表于 2011-7-22 09:05:43 | 显示全部楼层
回复 8# binghc

这么兴奋,举个例子呗
发表于 2011-7-22 10:00:25 | 显示全部楼层
回复  binghc

这么兴奋,举个例子呗
daiyu116 发表于 2011-7-22 09:05



    很容易想到用处,虽然可以用别的方法代替,如:

_Test(0)

Func _Test($A = 0, $B = 3, $C = 6)
        MsgBox(0,0,"4个参数中调用了默认的:" & (4 - @NumParams) & "个")
EndFunc
 
 楼主| 发表于 2011-8-13 22:26:32 | 显示全部楼层
回复 10# happytc


    目前已经想到两种用法,给提示其中一种可以用来模拟定义一个接收变长参数的函数,这听起来有点疯狂吧,哈哈
发表于 2011-8-13 22:59:21 | 显示全部楼层
回复 11# binghc


    不如直接贴代码 来得更加简洁明了。
发表于 2011-8-13 23:48:09 | 显示全部楼层
回复 12# pusofalse


    我经常用它的是这样用:直接进入界面的某个标签 :


Func Config($TabFlag=0)
If @NumParams > 0 Then
        Switch $TabFlag
                Case 0
                        GUICtrlSetState($RecordModeTab, $GUI_SHOW)
                Case 1
                        GUICtrlSetState($OptionTab, $GUI_SHOW)
                Case 2
                        GUICtrlSetState($HotkeyTab, $GUI_SHOW)
                Case 3
                        GUICtrlSetState($OutputTab, $GUI_SHOW)
        EndSwitch
EndIf
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 01:49 , Processed in 0.092740 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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