我对 VBS 变量值赋值有疑问:
Dim varName
varName = function(x, y)
varName = function(x, y)
function是一个递归函数,它调用自己:
Function function(x, y)
If IsObject(dicColumnIndices) Then
function = CInt(dicColumnIndices.Item(y))
Else
Set oCDSGrid = %MyAppObject%
Set dicColumnIndices = CreateObject("Scripting.Dictionary")
intColumnCount = oCDSGrid.ActiveSheet.Columns.Count
For i = 0 To intColumnCount - 1
dicColumnIndices.Add oCDSGrid.ActiveSheet.Columns.Item(i).Label, i
Next
function x, y
End If
End Function
据我所知,变量赋值只发生在第二次尝试。我认为这与我的函数递归调用自身有关(如果我删除递归调用,问题就消失了),但我非常想了解这种行为的根源是什么。
我查找了 StackOverflow 和 Internet 都没有运气。
编辑:为了解决这个问题,我不得不删除递归调用:
Function function(x, y)
If IsObject(dicColumnIndices) Then
function = CInt(dicColumnIndices.Item(y))
Else
Set oCDSGrid = %MyAppObject%
Set dicColumnIndices = CreateObject("Scripting.Dictionary")
intColumnCount = oCDSGrid.ActiveSheet.Columns.Count
For i = 0 To intColumnCount - 1
dicColumnIndices.Add oCDSGrid.ActiveSheet.Columns.Item(i).Label, i
Next
function = CInt(dicColumnIndices.Item(y))
End If
End Function
编辑 2:最后,在 MSDN 的帮助下,我得到了错误的部分——这是第二个电话
function x, y
将值返回为空,必须更改为:
function = function x, y
感谢大家!