什么是最好的方式来迭代,通过一系列在经典的Asp VBScript?
-
08-06-2019 - |
题
在代码下面
For i = LBound(arr) To UBound(arr)
要点是什么,在要求使用 LBound
?当然,总是0.
解决方案
为什么不用 For Each
?这样,你不需要照顾什么 LBound
和 UBound
是。
Dim x, y, z
x = Array(1, 2, 3)
For Each y In x
z = DoSomethingWith(y)
Next
其他提示
有一个很好的理由 不用 For i = LBound(arr) To UBound(arr)
dim arr(10)
分配的十一名成员的阵列,0到10(假定的维生素b6默认选择基准)。
许多维生素b6的程序员承担阵列是一个基于和从来没有使用的分配 arr(0)
.我们可以删除一个潜在来源的错误使用 For i = 1 To UBound(arr)
或 For i = 0 To UBound(arr)
, ,因为那显然是否 arr(0)
正在使用。
For each
使得副本的每一个元件阵列,而不是指针。
这两个问题。
当我们试图将一个值分配给一个元件阵列,不反映在原来的。这个代码分配一个值的47变
i
, 但不影响要素arr
.arr = Array(3,4,8) for each i in arr i = 47 next i Response.Write arr(0) '- returns 3, not 47
我们不知道的指标阵列中的元素
for each
, 我们不能保证序列元素(虽然这似乎是在单。)
LBound
可能并不总是0.
虽然这是不可能创建一个数组,有什么比一个0下限在VBScript,它仍然是可以检索一系列变从一个COM component其可能已经指定了不同的 LBound
.
这就是说我从来没遇到那个已经做这样的事情。
可能它来自维生素b6.因为有了 选择基 声明中的维生素b6中,你可以改变的下限数组是这样的:
Option Base 1
还有维生素b6在,你可以改变的下限的具体阵列是这样的:
Dim myArray(4 To 42) As String
我总是用于为每个...
不隶属于 StackOverflow