LotusScript中Erase数组后如何判断数组是否为空?
LotusScript中判断Erase后数组是否为空的方法
在LotusScript里,Erase语句对已初始化的Variant数组执行后,并不会将其重置为未初始化的Empty状态——它只是清空数组元素,留下一个空的数组结构,所以IsEmpty(arr)会返回false,这是正常行为。
要判断Erase后的数组是否为空,最可靠的方式是通过错误捕获检测数组的上下界:因为空数组调用UBound会触发错误,我们可以利用这一点来判断。
示例函数:
Function IsArrayEmpty(arr As Variant) As Boolean ' 先判断是否为数组类型 If Not IsArray(arr) Then IsArrayEmpty = True Exit Function End If On Error Resume Next Dim temp As Integer temp = UBound(arr) ' 如果调用UBound出错,说明数组是空的 IsArrayEmpty = (Err.Number <> 0) On Error GoTo 0 End Function
使用时直接调用IsArrayEmpty(arr)即可,返回true则表示数组处于Erase后的空状态。
另外你测试ubound(arr(0))时出错,是因为Erase后的数组没有任何元素,访问arr(0)本身就会触发数组越界错误,自然无法调用UBound。
内容的提问来源于stack exchange,提问作者Black Knight
相关产品推荐
相关产品推荐

