以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自定义函数怎么实现参数缺省效果?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89538)

--  作者:luodang2050
--  发布时间:2016/8/24 0:46:00
--  自定义函数怎么实现参数缺省效果?

Functions.Execute(函数名, a, , c)

如上,希望实现跟全局function中option参数效果一致,参数2不设置,直接按缺省值。


--  作者:Hyphen
--  发布时间:2016/8/24 8:43:00
--  
Dim a As String
If Args.Length > 0 Then a = Args(0)
Dim b As String
If Args.Length > 1 Then b = Args(1)

--  作者:blackzhu
--  发布时间:2016/8/24 8:58:00
--  
 在全局代码中写函数,跟VS写法一模一样
--  作者:luodang2050
--  发布时间:2016/8/24 9:31:00
--  
以下是引用Hyphen在2016/8/24 8:43:00的发言:
Dim a As String
If Args.Length > 0 Then a = Args(0)
Dim b As String
If Args.Length > 1 Then b = Args(1)
此种写法只能达到 (a,b,[c])的效果,并不能达到(a,,c)的效果

[此贴子已经被作者于2016/8/24 9:32:46编辑过]

--  作者:luodang2050
--  发布时间:2016/8/24 9:34:00
--  
全局代码实现没问题,问题是希望写在自定义函数里面,这样便于管理,全局代码调试经常重启项目,太不方便了
--  作者:Hyphen
--  发布时间:2016/8/24 9:40:00
--  
道理是一样的啊,option一样不能跳过中间参数的
--  作者:luodang2050
--  发布时间:2016/8/24 9:42:00
--  
option可以跳过,如test(a,,c)
但自定义函数好像不能,如Functions.Execute("test",a,,c)


--  作者:Hyphen
--  发布时间:2016/8/24 9:46:00
--  
Functions.Execute("test",a,nothing,c),只能这样
--  作者:Hyphen
--  发布时间:2016/8/24 9:47:00
--  
不然就用object数组作为参数传递
--  作者:luodang2050
--  发布时间:2016/8/24 9:50:00
--  
Functions.Execute("test",a,nothing,c)
nothing用法好像还是有点区别,比如参数b缺省要求自动赋值为b2,当为“”时不认定为缺省,仍旧赋值为“”。nothing赋值进去会自动识别为“”,不能实现此种效果,不知有何解决方法