UBound / LBound如何在VBScript中支持可选的Dimension参数?

时间:2019-02-11 17:02:45

标签: vbscript

我一直在学习VBScript的基础知识,我对UBound和LBound如何接受一个或两个参数感到好奇。我已经读到VBScript不支持可选参数也不支持重载函数,那么这些函数如何能够采用可选的第二个参数?

This page on the Rhino Developer Docs讨论了在VBscript中实现可选参数的解决方法,但由于调用者不必传入参数数组,因此实现UBound和LBound的方式似乎并不像这样。

1 个答案:

答案 0 :(得分:1)

VBScript与无类型VBA兼容(即不与CREATE OR REPLACE FUNCTION example (p_name text) RETURNS void LANGUAGE 'plpgsql' AS $$ DECLARE C1 refcursor; res record; BEGIN OPEN c1 FOR EXECUTE 'SELECT * FROM pg_database WHERE datname like ''%'||p_name||'%'''; LOOP FETCH c1 INTO res; EXIT WHEN not found; raise notice 'value datname: %',res.datname; END LOOP; CLOSE c1; RETURN; END; $$; --in my case select example ('test') NOTICE: value datname: test NOTICE: value datname: test_msmov NOTICE: value datname: test_resources NOTICE: value datname: test_load_table NOTICE: value datname: test_resources2 Total query runtime: 63 msec 1 row retrieved. 兼容)。

VBScript错误代码来自一百万年前由Bill Gates / Paul Allen编写的Altair Basic。因此它建立在过去的基础上。参见https://blogs.msdn.microsoft.com/ericlippert/2004/09/09/thirty-years-of-backwards-compatibility/

以这个例子

dim

它告诉第一个参数是否为一个数字(后面跟两个字符串),以计算是否通过它。但是您不能使用它来概括其他行为,因为在这种特定情况下需要与VBA(以及更早的BASICS)兼容来支持该行为。

因此,您的陈述我已阅读到VBScript不支持可选参数也不支持重载函数,那么这些函数如何能够采用可选的第二个参数? true,除非它不是