Quelle est la meilleure façon de parcourir un tableau en classique Asp VBScript?

voix
31

Dans le code ci-dessous

For i = LBound(arr) To UBound(arr)

Quel est le point de demander l' aide LBound? Certes , c'est toujours 0.

Créé 05/08/2008 à 15:07
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
45

Pourquoi ne pas utiliser For Each? De cette façon , vous n'avez pas besoin de prendre soin ce que le LBoundet UBoundsont.

Dim x, y, z
x = Array(1, 2, 3)

For Each y In x
    z = DoSomethingWith(y)
Next
Créé 05/08/2008 à 15:36
source utilisateur

voix
16

Il y a une bonne raison de NE PAS UTILISERFor i = LBound(arr) To UBound(arr)

dim arr(10) alloue onze membres du réseau, de 0 à 10 (en supposant que la valeur par défaut VB6 Option Base).

De nombreux programmeurs VB6 le tableau est supposent une base, et ne jamais utiliser la somme allouée arr(0). Nous pouvons éliminer une source potentielle de bogues en utilisant For i = 1 To UBound(arr)ou For i = 0 To UBound(arr), car il est clair que arr(0)est utilisé.

For each fait une copie de chaque élément de réseau, au lieu d'un pointeur.

Cela a deux problèmes.

  1. Lorsque nous essayons d'attribuer une valeur à un élément de tableau, il ne reflète pas sur l' original. Ce code attribue une valeur de 47 à la variable i, mais ne modifie pas les éléments de arr.

    arr = Array (3,4,8)
    pour chaque i dans arr
         i = 47
    ensuite je
    Response.Write arr (0) « - renvoie 3, et non 47

  2. Nous ne savons pas l'indice d'un élément de tableau dans un for each, et nous ne sommes pas garanti la séquence d'éléments (bien qu'il semble être dans l' ordre.)

Créé 23/09/2008 à 16:24
source utilisateur

voix
3

LBound peut ne pas être toujours 0.

Alors qu'il est impossible de créer un tableau qui a autre chose qu'un 0 inférieure en VBScript, il est toujours possible de récupérer un tableau de variantes d'un composant COM qui peut avoir spécifié un autre LBound.

Cela dit, je ne l'ai jamais rencontré qui a fait quelque chose comme ça.

Créé 24/09/2008 à 19:24
source utilisateur

voix
1

J'ai toujours utilisé pour chaque ...

Créé 12/08/2008 à 15:34
source utilisateur

voix
1

Probablement , il vient de VB6. Parce qu'avec l' option Base de déclaration VB6, vous pouvez modifier la limite inférieure des tableaux comme celui - ci:

Option Base 1

De plus en VB6, vous pouvez modifier la limite inférieure d'un tableau spécifique comme celui-ci:

Dim myArray(4 To 42) As String
Créé 05/08/2008 à 15:24
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more