Arrays 如何在QBasic中查找数组参数的维数

Arrays 如何在QBasic中查找数组参数的维数,arrays,function,qbasic,Arrays,Function,Qbasic,我有一个QBasic函数,它接受两个数组作为参数。我想知道是否有可能找到这些数组在函数中的维数 在上下文中,我正在为QBasic单元测试库编写一个assertArrayEqual函数。无法实现这一点。如上所述,您可以确定下限和上限,但必须事先知道数组包含多少维度。据我所知,这甚至在更高级别的版本中都不可用。这可以做到,但并不漂亮:(QB64源代码) 您可以通过调用LBOUND/UBOUND并在维度超出范围时捕获错误来完成此操作,但QBasic的错误处理相当糟糕。我认为您最好为不同的维度创建单独的

我有一个QBasic函数,它接受两个数组作为参数。我想知道是否有可能找到这些数组在函数中的维数


在上下文中,我正在为QBasic单元测试库编写一个assertArrayEqual函数。

无法实现这一点。如上所述,您可以确定下限和上限,但必须事先知道数组包含多少维度。据我所知,这甚至在更高级别的版本中都不可用。

这可以做到,但并不漂亮:(QB64源代码)


您可以通过调用
LBOUND
/
UBOUND
并在维度超出范围时捕获错误来完成此操作,但QBasic的错误处理相当糟糕。我认为您最好为不同的维度创建单独的函数。将发生的错误是9(下标超出范围),并且可能会被捕获。如果您在循环中测试数组维度的上限,直到出现错误,那么您可以计算维度。
REM sample code to find number of dimensions in an array
DIM a(2, 2, 2) AS INTEGER
DIM SHARED E AS INTEGER
ON ERROR GOTO 10
CALL array(a())
END
10 E = -1: RESUME NEXT
SUB array (a() AS INTEGER)
DO
    X = X + 1
    T = UBOUND(a, X)
    IF E THEN
        X = X - 1
        PRINT "Array has"; X; "dimensions."
        EXIT DO
    END IF
LOOP
END SUB