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
86. LotusScript中的数组函数的更多相关文章
- 【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
问题描述 算法 Algorithms (第四版)书中,第1章:基础编程模型第15题: 结果: 编写一个静态方法 histogram(), 接受一个整型数组a[] 和一个整数M为参数,并返回一个大小为M ...
- javascript中常用数组函数
1.split方法——通过分隔符,将字符串分割,导出字符数组 常用于:分割IP地址,分割文件路径(上传文件时)等等 <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- 辛星解读之php中的重点函数第一节之数组函数
这里我已经写好它的pdf版本号了,比本博客更加适合阅读.首先说一下它在百度网盘的下载地址把:百度网盘下载 ,假设左边连接跪了.能够在浏览器中输入:http://pan.baidu.com/s/1qW5 ...
- PHP中获取数组中单列的值
PHP中获取数组中单列的值如下: 利用PHP中的数组函数 array_column():返回数组中某个单列的值.(PHP 5.5+适用) 语法: array_column(array,column_k ...
- Labview学习之路(十三)数组函数
本文章介绍一下函数选版中的数组函数,一眼看懂没什么特殊地方的就不说了 (一)数组大小 返回I32类型的数或者数组. 什么是I32类型?就是32位有符号整型, 有符号什么意思?就是在32位数据中最高做符 ...
- php中的常用数组函数(一)(比较多个数组的差集的函数们 array_diff_assoc() array_diff() array_diff_key() array_diff_ukey() array_diff_uassoc())
array_diff_assoc($arr1, $arr2, $arr3,... n); 返回:一个$arr1的副本,后续的数组中出现一个键值相同的元素,就在副本中删掉这个元素,最后返回这个副本. 如 ...
- PHP中的数组(二)常用数组处理函数
数组的相关处理函数 一.数组键/值操作有关的函数 1.array_values() 无论是关联的还是索引的返回的都是索引数组 <?php $lamp=array(&quo ...
- PHP 中数组函数 isset 效率比 array_key_exists 更高
PHP 中数组函数 isset 效率比 array_key_exists 更高 PHP 浏览:4194 2014年04月05日 isset 和 array_key_exists 函数都可以用来测试数组 ...
- 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总
PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...
随机推荐
- CREATE GROUP - 定义一个新的用户组
SYNOPSIS CREATE GROUP name [ [ WITH ] option [ ... ] ] where option can be: SYSID gid | USER usernam ...
- 卸载钩子 UnhookWindowsHookEx
The UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindow ...
- oracle优化器使用(oracle11g)
一:优化器介绍 优化器(optimizer)是oracle数据库内置的一个核心子系统.优化器的目的是按照一定的判断原则来得到它认为的目标SQL在当前的情形下的最高效的执行路径,也就是为了得到目标SQL ...
- Debug:This kind of launch is configured to openthe debug perspective when it解决办法
http://blog.sina.com.cn/s/blog_7ca3aa020100zlha.html 启动tomcat时,myeclipse报错: This kind of launch is c ...
- VINS-Mono论文笔记(未完)
这是整篇论文的架构,下面针对每一部分进行自己的详细理解.(数学公式的问题没在博客里面解决,都是论文中的截图,尽可能美观==) 一.测量预处理部分(MEASUREMENT PREPROCESSING) ...
- LG-P1311选择客栈
题目 暴力十分好想但你写不出来qwq 正解十分好写但你想不出来qaq 我们先读题,发现k其实没什么用 同时暴力枚举两个客栈的话会超时,所以只能同时枚举一个.我们枚举第二个客栈,然后用第二个客栈反推出前 ...
- [LUOGU] P1113 杂物
题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它.比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作.尽早将所有杂务完成是必要的,因为 ...
- 集训第六周 数学概念与方法 数论 筛素数 H题
Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“ ...
- 《C语言程序设计(第四版)》阅读心得(一)
本篇开始写我个人觉得谭浩强老师的<C语言程序设计(第四版)>中之前没有认识到,或者忘了的知识.因为本科学过,所以有些简单的东西就没有放进来了,所以可能并不是太全面. 第一章程序设计与语言 ...
- [K/3Cloud] 单据新增、复制、新增行、复制行的过程
整单复制:先执行CopyData(获得数据包),在执行AfterCreateNewData(可处理数据包),不会执行AfterCreateNewEntryRow 单据新增:先执行AfterCreate ...