86. LotusScript中的數組函數,lotusscript數組

來源:互聯網
上載者:User

86. LotusScript中的數組函數,lotusscript數組

R6對LotusScript有一些改進和增強,自那之後,Notes對象的介面時有補充和更新,但語言本身沒有變化。那些改進就包括增加諸如ArrayGetIndex、ArrayUnique的有用函數。但在編程實踐中,還有一些對數組的操作LotusScript沒有提供原生的函數,好在基本上都能自己編寫。下面的函數中用到的常數都在lsconst.lss或lserr.lss裡定義,在指令碼前要附加

%INCLUDE"lsconst.lss"

%INCLUDE"lserr.lss"

判斷數組是否包含某個元素。

%REMChecks if an array contains a value.The ArrayGetIndex function returns null if the value is not found.%END REMPublic Function ArrayContains(source As Variant, value As Variant) As Boolean'the data type of source is not checked intentionallyArrayContains=Not IsNull(ArrayGetIndex(source,value))End Function

LotusScript中的數組最多可以有八維(dimension),下面這個函數利用執行階段錯誤(run-time error)ErrSubscriptOutOfRange獲得維數。

'Returns the number of an array's dimensionsFunction ArrayDimension(array As Variant) As IntegerIf Not IsArray(array) ThenArrayDimension=0Exit Function End IfOn Error ErrSubscriptOutOfRange GoTo RESULTDim d As Integer, lb As Integer  For d=1 To 9lb=LBound(array, d)NextRESULT:ArrayDimension=d-1Exit Function End Function

返回多維陣列的大小,即所有元素的個數。

Function ArraySize(array As Variant) As IntegerIf Not IsArray(array) ThenArraySize=0Exit Function End IfArraySize=1Dim d As Integerd=ArrayDimension(array)Dim i As IntegerFor i=1 To dArraySize=ArraySize*(UBound(array, i)-LBound(array,i)+1)NextEnd Function

判斷兩個數組的“形狀”,也就是維數和每一維的上下限是否相同。這個函數在今後比較數組是否相等時有用。

Function ArrayBoundsEquals(a1 As Variant, a2 As Variant) As BooleanIf (Not IsArray(a1)) Or (Not IsArray(a2)) ThenArrayBoundsEquals=FalseExit Function End IfDim d1 As Integer, d2 As Integerd1=ArrayDimension(a1)d2=ArrayDimension(a2)If d1<>d2 ThenArrayBoundsEquals=FalseExit FunctionEnd IfDim d As IntegerFor d=1 To d1If LBound(a1)><LBound(a2) Or UBound(a1)><UBound(a2) ThenArrayBoundsEquals=FalseExit FunctionEnd IfNextArrayBoundsEquals=True End Function

將多維陣列轉換成一維數組。這個函數同樣用於比較兩個數組是否相等。

Function ArrayToOneDimension(array As Variant) As VariantIf Not IsArray(array) ThenCall SetValue(ArrayToOneDimension, array)Exit Function End IfDim d As Integerd=ArrayDimension(array)If d=1 ThenArrayToOneDimension=arrayExit FunctionEnd IfDim size As Integersize=ArraySize(array)Dim result() As VariantReDim result(size-1)Dim i As Integer ForAll e In arrayresult(i)=ei=i+1End ForAllArrayToOneDimension=resultEnd Function





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.