Lotusscript - 使用 ArrayGetIndex 时类型不匹配

Lotusscript - Type mismatch when useing ArrayGetIndex

我有一个函数可以检查是否在变体中找到字符串:

Function checkIfValueIsInVariant (tempVariant As Variant, tempValue As String) As Boolean
    Dim valueFound As Boolean

    'zet standaard waarde op niet gevonden
    valueFound = False
    Print "Value : " + tempValue
    If Not IsNull( ArrayGetIndex(tempVariant, tempValue) ) Then
            'waarde is gevonden in variant dus zet op true
            valueFound = true
    End If
        checkIfValueIsInVariant = valueFound
End Function

当我使用调试器检查代码时,我可以看到这些值:

tempVariant = "value" type = Variant
tempValue = "value" type = String

但是当它执行这一行时:

`If Not IsNull( ArrayGetIndex(tempVariant, tempValue) )` Then

我得到类型不匹配,我做错了什么?

Variant 在 LotusScript 中是一种非常糟糕的数据类型:它可以包含任何内容。 ArrayGetIndex 期望第一个参数为 An array or Variant containing an array.。在您的示例中,tempvariant 是字符串类型的 Variant 而不是数组 --> 类型不匹配。

如果我不知道,如果我之前得到一个标量或数组,那么通常我会在我的代码中写这样的东西:

Dim varArray as Variant
Dim arrOneElement(0) as Variant


If not IsArray( tempVariant ) then
    arrOneElement(0) = tempVariant
    varArray = arrOneElement
Else
    varArray = tempVariant 
End If
If Not IsNull( ArrayGetIndex(varArray, tempValue) ) Then

这样我就可以(几乎)放任何我想要的东西,它会 return 正确的结果。