我一直在学习VBScript的基础知识,我对UBound和LBound如何接受一个或两个参数感到好奇。我已经读到VBScript不支持可选参数也不支持重载函数,那么这些函数如何能够采用可选的第二个参数?
This page on the Rhino Developer Docs讨论了在VBscript中实现可选参数的解决方法,但由于调用者不必传入参数数组,因此实现UBound和LBound的方式似乎并不像这样。
答案 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,除非它不是。