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