ASP中定義數(shù)組方法分享
作者: 來源: 發(fā)布時間:2011-6-25 11:18:58 點擊:
例如,雖然可以將一個聲明為整型的變量賦給一個聲明為長整型的變量而不會產(chǎn)生任何問題,但是將一個長整型變量賦給一個整型變量就很容易導(dǎo)致溢出錯誤。除了遵守有關(guān)數(shù)據(jù)類型變量之間賦值時的規(guī)則外,數(shù)組賦值還要遵從另外一些規(guī)則,包括數(shù)組維數(shù),每一維的大小,以及數(shù)組是固定的還是動態(tài)的。
①維數(shù)、數(shù)據(jù)類型不同的數(shù)組賦值考慮的幾個因素
l 賦值符左邊的數(shù)組類型:固定數(shù)組 (Dim x(1 to 10) As Integer) 或者動態(tài)數(shù)組 (Dim x() As Integer)。
l 賦值符左邊數(shù)組的維數(shù)是否和賦值符右邊數(shù)組的維數(shù)匹配。
l 賦值符兩邊數(shù)組的每一維的數(shù)組元素個數(shù)是否匹配。即使數(shù)組的聲明不同,維數(shù)也可能匹配。比如一個數(shù)組的每一維元素從 0 開始編號而另一個則從 1 開始,維數(shù)也可能匹配。
l 賦值符兩邊所有元素的數(shù)據(jù)類型必須是相容的。這些規(guī)則和變量賦值的規(guī)則是一致的。
表3-6顯示了這些因素的影響:
數(shù)組賦值時的錯誤可能發(fā)生在編譯時,也可能發(fā)生在運行時(例如,如果數(shù)據(jù)類型不能強制轉(zhuǎn)換或賦值試圖重新聲明 (ReDim) 一個靜態(tài)數(shù)組)。設(shè)計程序時要添加錯誤處理以確保數(shù)組在賦值之前是匹配的。
②編寫返回數(shù)組的函數(shù)
從一個函數(shù)返回一組值是可能實現(xiàn)的。例如,從一個函數(shù)返回一組字節(jié)而不必將其先轉(zhuǎn)換為一個字符串然后再轉(zhuǎn)換回來。
下面是一個使用返回字節(jié)數(shù)組的函數(shù)的簡單示例:
Private Sub Form_Load()
Dim b As Byte
Dim i As Integer
Dim ReturnArray() As Byte
b = Cbyte(54)
ReturnArray() = ArrayFunction(b) ’調(diào)用函數(shù)
For i = Lbound(ReturnArray) To Ubound(ReturnArray)
Msgbox ReturnArray(i) ’通過彈出消息框循環(huán)顯示數(shù)組值
Next
End Sub
Public Function ArrayFunction(b As Byte) As Byte()
Dim x(2) As Byte
x(0) = b
x(1) = b + CByte(200)
x(2) = b + b
ArrayFunction = x ’返回結(jié)果為數(shù)組x
End Function
在運行以上示例后, ReturnArray() 是一個三元素數(shù)組,其中包含了分配給 ArrayFunction 中數(shù)組的值。ArrayFunction 語句將一個數(shù)組作為參數(shù)傳遞;且數(shù)組的數(shù)據(jù)類型必須和函數(shù)的數(shù)據(jù)類型相同(在本例中是字節(jié))。因為這是一個函數(shù)調(diào)用,傳遞數(shù)組時不必帶括號。
注意:
1.盡管可以通過賦值給另一個數(shù)組(ArrayFunction = x())來返回一個數(shù)組,但出于性能方面的考慮,并不推薦使用這種方法。
2.必須為返回數(shù)組的函數(shù)指定一個類型,這個類型可以是 Variant。這樣一來,F(xiàn)unction X() As Variant() 是有效的而 Function X() As () 將失敗。
3.當(dāng)調(diào)用一個返回數(shù)組的函數(shù)時,用來保存返回值的變量也必須是一個數(shù)組,而且其數(shù)據(jù)類型必須和函數(shù)返回類型相同,否則將顯示一個“類型不匹配”的錯誤。
①維數(shù)、數(shù)據(jù)類型不同的數(shù)組賦值考慮的幾個因素
l 賦值符左邊的數(shù)組類型:固定數(shù)組 (Dim x(1 to 10) As Integer) 或者動態(tài)數(shù)組 (Dim x() As Integer)。
l 賦值符左邊數(shù)組的維數(shù)是否和賦值符右邊數(shù)組的維數(shù)匹配。
l 賦值符兩邊數(shù)組的每一維的數(shù)組元素個數(shù)是否匹配。即使數(shù)組的聲明不同,維數(shù)也可能匹配。比如一個數(shù)組的每一維元素從 0 開始編號而另一個則從 1 開始,維數(shù)也可能匹配。
l 賦值符兩邊所有元素的數(shù)據(jù)類型必須是相容的。這些規(guī)則和變量賦值的規(guī)則是一致的。
表3-6顯示了這些因素的影響:
數(shù)組賦值時的錯誤可能發(fā)生在編譯時,也可能發(fā)生在運行時(例如,如果數(shù)據(jù)類型不能強制轉(zhuǎn)換或賦值試圖重新聲明 (ReDim) 一個靜態(tài)數(shù)組)。設(shè)計程序時要添加錯誤處理以確保數(shù)組在賦值之前是匹配的。
②編寫返回數(shù)組的函數(shù)
從一個函數(shù)返回一組值是可能實現(xiàn)的。例如,從一個函數(shù)返回一組字節(jié)而不必將其先轉(zhuǎn)換為一個字符串然后再轉(zhuǎn)換回來。
下面是一個使用返回字節(jié)數(shù)組的函數(shù)的簡單示例:
Private Sub Form_Load()
Dim b As Byte
Dim i As Integer
Dim ReturnArray() As Byte
b = Cbyte(54)
ReturnArray() = ArrayFunction(b) ’調(diào)用函數(shù)
For i = Lbound(ReturnArray) To Ubound(ReturnArray)
Msgbox ReturnArray(i) ’通過彈出消息框循環(huán)顯示數(shù)組值
Next
End Sub
Public Function ArrayFunction(b As Byte) As Byte()
Dim x(2) As Byte
x(0) = b
x(1) = b + CByte(200)
x(2) = b + b
ArrayFunction = x ’返回結(jié)果為數(shù)組x
End Function
在運行以上示例后, ReturnArray() 是一個三元素數(shù)組,其中包含了分配給 ArrayFunction 中數(shù)組的值。ArrayFunction 語句將一個數(shù)組作為參數(shù)傳遞;且數(shù)組的數(shù)據(jù)類型必須和函數(shù)的數(shù)據(jù)類型相同(在本例中是字節(jié))。因為這是一個函數(shù)調(diào)用,傳遞數(shù)組時不必帶括號。
注意:
1.盡管可以通過賦值給另一個數(shù)組(ArrayFunction = x())來返回一個數(shù)組,但出于性能方面的考慮,并不推薦使用這種方法。
2.必須為返回數(shù)組的函數(shù)指定一個類型,這個類型可以是 Variant。這樣一來,F(xiàn)unction X() As Variant() 是有效的而 Function X() As () 將失敗。
3.當(dāng)調(diào)用一個返回數(shù)組的函數(shù)時,用來保存返回值的變量也必須是一個數(shù)組,而且其數(shù)據(jù)類型必須和函數(shù)返回類型相同,否則將顯示一個“類型不匹配”的錯誤。
Tags:
ASP中定義數(shù)組方法分享[收藏此文章]