86. LotusScript中的数组函数

R6对LotusScript有一些改进和增强,自那之后,Notes对象的接口时有补充和更新,但语言本身没有变化。那些改进就包括增加诸如ArrayGetIndex、ArrayUnique的有用函数。但在编程实践中,还有一些对数组的操作LotusScript没有提供原生的函数,好在基本上都能自己编写。下面的函数中用到的常数都在lsconst.lss或lserr.lss里定义,在脚本前要附加

%INCLUDE"lsconst.lss"

%INCLUDE"lserr.lss"

判断数组是否包含某个元素。

%REM
	Checks if an array contains a value.
	The ArrayGetIndex function returns null if the value is not found.
%END REM
Public Function ArrayContains(source As Variant, value As Variant) As Boolean
	‘the data type of source is not checked intentionally
	ArrayContains=Not IsNull(ArrayGetIndex(source,value))
End Function

LotusScript中的数组最多可以有八维(dimension),下面这个函数利用运行时错误(run-time error)ErrSubscriptOutOfRange获得维数。

‘Returns the number of an array‘s dimensions
Function ArrayDimension(array As Variant) As Integer
	If Not IsArray(array) Then
		ArrayDimension=0
		Exit Function
	End If

	On Error ErrSubscriptOutOfRange GoTo RESULT
	Dim d As Integer, lb As Integer
	For d=1 To 9
		lb=LBound(array, d)
	Next

RESULT:
	ArrayDimension=d-1
	Exit Function
End Function

返回多维数组的大小,即所有元素的个数。

Function ArraySize(array As Variant) As Integer
	If Not IsArray(array) Then
		ArraySize=0
		Exit Function
	End If

	ArraySize=1
	Dim d As Integer
	d=ArrayDimension(array)
	Dim i As Integer
	For i=1 To d
		ArraySize=ArraySize*(UBound(array, i)-LBound(array,i)+1)
	Next
End Function

判断两个数组的“形状”,也就是维数和每一维的上下限是否相同。这个函数在今后比较数组是否相等时有用。

Function ArrayBoundsEquals(a1 As Variant, a2 As Variant) As Boolean
	If (Not IsArray(a1)) Or (Not IsArray(a2)) Then
		ArrayBoundsEquals=False
		Exit Function
	End If

	Dim d1 As Integer, d2 As Integer
	d1=ArrayDimension(a1)
	d2=ArrayDimension(a2)
	If d1<>d2 Then
		ArrayBoundsEquals=False
		Exit Function
	End If

	Dim d As Integer
	For d=1 To d1
		If LBound(a1)><LBound(a2) Or UBound(a1)><UBound(a2) Then
			ArrayBoundsEquals=False
			Exit Function
		End If
	Next

	ArrayBoundsEquals=True
End Function

将多维数组转换成一维数组。这个函数同样用于比较两个数组是否相等。

Function ArrayToOneDimension(array As Variant) As Variant
	If Not IsArray(array) Then
		Call SetValue(ArrayToOneDimension, array)
		Exit Function
	End If

	Dim d As Integer
	d=ArrayDimension(array)
	If d=1 Then
		ArrayToOneDimension=array
		Exit Function
	End If

	Dim size As Integer
	size=ArraySize(array)
	Dim result() As Variant
	ReDim result(size-1)
	Dim i As Integer
	ForAll e In array
		result(i)=e
		i=i+1
	End ForAll

	ArrayToOneDimension=result
End Function

时间: 2024-11-05 19:03:22

86. LotusScript中的数组函数的相关文章

PHP中的数组函数

1 一:函数介绍 2 我们知道,在PHP中操作数组是非常重要的一步,没有数组,可谓就没有PHP,因此它的重要性不言而喻! 3 数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体都包含两项:键和值. 4 演示地址: http://www.ijquery.cn/phpfunction/BaseFunctionArray/DemoArray.php 5 下载地址: http://www.ijquery.cn/phpfunction/BaseFunctionArray/B

辛星解读之php中的重点函数第一节之数组函数

这里我已经写好它的pdf版本了,比本博客更加适合阅读.首先说一下它在百度网盘的下载地址把:百度网盘下载 ,如果左边连接跪了,可以在浏览器中输入:http://pan.baidu.com/s/1qW5AYzM 来下载.然后说一下它在csdn的下载地址,是免积分的奥,下载地址:csdn资源下载处 ,如果连接不起作用,可以在浏览器输入:http://download.csdn.net/detail/xinguimeng/7697309  来手动下载. 好,我们知道php中函数还是很多的,正是这些函数为

20.16 20.17shell中的函数(上下);20.18 shell中的数组;20.19 告警系统需求分析

20.16 shell中的函数(上) 函数就是把一段代码整理到了一个小单元中,并给这个小单元起 一个名字,当用到这段代码时直接调用这个小单元的名字即可. 1. [[email protected] ~]# vi fun1.sh 添加内容: #!/bin/bash function inp(){ echo "The first par is $1" echo "The second par is $2" echo "The third par is $3&q

【示例】C语言中利用数组存放函数指针

C语言中利用数组存放函数指针,增加函数使用的灵活性.使用时只需提供数组索引,即可调用不同函数. 预备知识: 1.指向函数的指针 一个函数在编译时被分配一个入口地址,这个地址就被称为函数的指针. 例如: int max(int,int); // 声明函数,比较两数大小 int (*p)(); //声明指向函数的指针变量 p=max; //将函数max的入口地址赋给指针变量p int c=(*p)(a,b); //调用函数 2.函数指针作为函数参数 该例子中每次给process函数不同实参(函数名)

PHP 中数组函数 isset 效率比 array_key_exists 更高

PHP 中数组函数 isset 效率比 array_key_exists 更高 PHP 浏览:4194 2014年04月05日 isset 和 array_key_exists 函数都可以用来测试数组中变量是否存在: if(isset($array[$i])){ echo "存在"; } if(array_key_exists($i, $array)) { echo "存在"; } 那么这两个函数有什么区别呢?经过测试: 当数组个数为10时,两者差异就体现出来了,i

PHP中的数组(二)常用数组处理函数

数组的相关处理函数    一.数组键/值操作有关的函数        1.array_values()   无论是关联的还是索引的返回的都是索引数组 1 <?php 2 $lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php&q

[整理]函数的声明中的数组参数

在函数的声明的数组参数中,并为指明数组的长度.因为在C中,允许单个函数操纵任意长度的一维数组.这个特性不利的一面是函数没法知道该数组的长度.如果确实需要知道数组的长度,必须作为一个单独的参数传递给函数. 当数组名作为实参时,传递给函数的实际上是一个指向数组起始位置的指针. /*开发环境:vs2010 window xp sp3*/ #include <stdio.h> int main(void) { void array_len(int v[]); int v[]= { 70, 30, 40

C++中提供的字符串数组函数

C++语言为程序设计者提供了一些可以非常方便地处理字符数组的函数.这些函数可以完成字符数组的复制.连接.比较以及查找等操作. 在数组声明时,C++会自动产生一个指向该数组第一个数据元素的指针.当使用数组的名字时,实际上是在使用一个指向该数组的指针. 下面是一些C++中提供的字符串数组函数,给出了它们的原型和调用语句,这些函数的输入都是一个字符指针(char*). 函数原型    void strcat(char *dest, char *src); 功能:将字符串src连接到字符串dest后面.

shell中的函数、shell中的数组、告警系统需求分析

20.16-20.17 shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() { command } 函数必须要放在最前面 脚本实例1 #!/bin/bash function inp(){ echo $1 $2 $3 $0 $# } inp 1 a 2 脚本实例2 #!/bin/bash sum() { s=$[$1+$2] echo $s } sum 1 2 脚本实例3