2016-06-08 1 views
1

이 중첩 루프 예제를 최적화하여 이러한 var_Arrays의 동적 숫자를 사용하는 방법이 있습니까? n 레벨 중첩 루프 vbs

'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)와 내가 중첩 된 루프로 갈 필요가 얼마나 깊은 알게 될 것입니다,하지만 난 방법을 구현하는 아무 생각이 없다 동적 범위 (최소, 최대, 공정)과 함께 동적 중첩 루프

답변

0

대답이 내 문제 해결 : https://stackoverflow.com/a/4683760/6440754

만 조각 VBS에서 지원되지 않은 :

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/