【问题标题】:n-level nested loop vbsn级嵌套循环vbs
【发布时间】:2016-06-09 14:38:16
【问题描述】:

有没有办法优化这个嵌套循环示例以使用这些 var_Arrays 的动态数量?

'Dim var0_Arr : var0_Arr = Array(min,   max,    step)
Dim var1_Arr : var1_Arr =   Array(0,    1.0,    0.5)
Dim var2_Arr : var2_Arr =   Array(0,    1.0,    0.5)
Dim var3_Arr : var3_Arr =   Array(0,    1.0,    0.5)
Dim var4_Arr : var4_Arr =   Array(0,    1.0,    0.5)
'Dim var5_Arr : var5_Arr = ...
'Dim var6_Arr : var6_Arr = ...
'...

for var1 = var1_Arr(0) to var1_Arr(1)  step var1_Arr(2)
    for var2 = var2_Arr(0) to var2_Arr(1)  step var2_Arr(2)
        for var3 = var3_Arr(0) to var3_Arr(1)  step var3_Arr(2)
            for var4 = var4_Arr(0) to var4_Arr(1)  step var4_Arr(2)
                msgbox var1 & " " & var2 & "    " & var3 & "    " & var4
            next
        next
    next
next

我想用这样的东西:

Dim var_Arr : var_Arr = Array(  Array(0,    1.0,    0.5),_
                                Array(0,    1.0,    0.5),_
                                Array(0,    1.0,    0.5),_
                                Array(0,    1.0,    0.5))

使用 UBound(var_Arr) 我会知道嵌套循环的深度,但我不知道如何结合动态范围(最小值、最大值、步长)来实现动态嵌套循环

【问题讨论】:

    标签: loops dynamic vbscript nested


    【解决方案1】:

    这个答案解决了我的问题: https://stackoverflow.com/a/4683760/6440754

    vbs 不支持仅 Slice:

    Function Slice(ByRef arrArray, intStart, intEnd)
    
        If intEnd = vbNull Then intEnd = UBound(arrArray)
        If intStart < 0 Then intStart = UBound(arrArray) - intStart
    
        arrTemp = Array()
        intCount = 0
    
        For i = intStart To intEnd
            ReDim Preserve arrTemp(intCount)
            arrTemp(intCount) = arrArray(i)
            intCount = intCount + 1
        Next
    
        Slice = arrTemp
    
    End Function
    

    来源https://www.aspfree.com/c/a/code-examples/creating-useful-array-functions/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-18
      • 2020-10-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多