Call MagicFunction(intData1, intData2, Dim intData3) 是 vbs 中的有效语句吗?

Is Call MagicFunction(intData1, intData2, Dim intData3) a valid statement in vbs?

我不太确定如何以任何其他方式调整它。 问题是,我试图在 vbs 中合并具有相同名称的函数。有时,该功能会以不同的形式出现在系统的其他部分。如果它们相差太大,我很遗憾地让它们保持原样。但是,如果差异很小(比如其中一个函数只比其他函数多一个变量,然后我可以检查函数中的变量),我想添加一个变量作为替代变量。

我已经知道可选变量在 vbs 中是不可能的,而且我已经有过传递变体数组的经验(就像一个魅力),但我相信这种情况有点不同。

Dim 在这里不正确。你可以这样做,例如:

Public Function MagicFunction(intData1, ByRef intData2, ByVal intData3)
    ' some code
End Function

并调用它:

MagicFunction 3, iCount, ""

要有 "optional arguments",您只能使用一个数组来解析它(例如使用 UBound(aTab) 来 select 正确的大小写

Public Function MagicFunction(ByVal aTab)
    Select Case UBound(aTab)
        Case 1: MagicFunction1 aTab(1)
        Case 2: MagicFunction2 aTab(1), aTab(2)
        Case Else: MsgBox "function called with more than 2 args"  '<-- Should never go there
    End Select
End Function

根据参数的数量使用不同版本的函数,MagicFunction1、MagicFunction2...这很丑陋,但可以解决问题![​​=14=]

另一种可能性是使用空字符串作为参数,并定义函数如何在字符串为空时忽略部分(或者更准确地说,使用特定键调用,如 "IGNORE_KEY"

希望我能回答您的问题!