SSL函数01-数组函数Array Functions

一、数组的初始化

SSL中,数组下标从1开始

1-1、不知道数组的长度

:DECLARE a6;
a6 := {};
Aadd(a6,'a');
Aadd(a6,'b');
Aadd(a6,'c');

 当用a := {}创建一个数组的时候,不可以用a[1] = 值,来赋值!

1-2、知道数组的长度

方式一:

:DECLARE a5;
a5 := {,,};
a5[1] := 'a';
a5[2] := 'b';
a5[3] := 'c';

方式二:ArrayNew()函数

使用指定数量的元素和维度创建一个未初始化的数组。

aArray := ArrayNew(5); 
/*aArray := {NIL, NIL, NIL, NIL, NIL};*/

aArray := ArrayNew(3, 2) 
/*aArray := {{NIL, NIL}, {NIL, NIL}, {NIL, NIL}};*/

:DECLARE aMyArr;
aMyArr:=ArrayNew(3); 
aMyArr[1]:=1; 
aMyArr[2]:=2; 
aMyArr[3]:="a";
/*aMyArr={1,2,a}*/
usrmes("aMyArr=", aMyArr);

二、Aadd()函数

动态新增数组的长度,向数组末尾添加函数。

:DEFAULT ListArray,{5,10,15};
/*{5,10,15,20};*/
Aadd(ListArray, 20);
usrmes(ListArray);

/*{5,10,15,20,{30,40}};*/
Aadd(ListArray, {30,40});
usrmes(ListArray);

此函数可将目标数组的实际长度增加1

注意:

数组中可以添加任意类型的元素!!!

:DECLARE a1;
a1 := {1,2,3};
Aadd(a1, "abc");
usrmes("a1=", a1);

三、AEval() 函数

用于为数组中的 每个元素执行一个代码块
Aeval将元素值作为参数传递给代码块。
Aeval(Array Name, Code Block, <Start>, <Count>) ;
:DECLARE aArray, aResult; 
aArray := {1,2,3}; 
/*返回值;*/
aResult := {}; 
Aeval(aArray,{|X| Aadd(aResult,X+1) } );
/*{2,3,4}*/
usrmes(aResult);

 注意:

Aeval()函数忽略了代码块的返回值

四、AEvalA() 函数

Aeval()函数忽略了代码块的返回值!而AEvalA()则将返回值分配给数组元素。

:DECLARE aArray2; 
aArray2 := {1,2,3}; 
AevalA(aArray2,{|X| X+1 } ); 
/*直接在原数组中返回;*/
usrmes(aArray2);

五、AFill() 函数

AFill()通过为指定范围内的每个数组元素分配<uValle>,用任何数据类型的单个值填充指定的数组。

AFill(<aTarget>, <uValue>, [<nStart>], [<nCount>])
:DECLARE aLogic; // aLogic is {NIL} 
aLogic := {.T., .T., .T.}; 
AFill(aLogic, .F.); // aLogic is {.F., .F., .F.} 
AFill(aLogic, .T., 2, 2); // aLogic is {.F., .T., .T.}

:DECLARE a2; //a 2-dimensional array 
a2 := {{1,2,3},{4,5,6},{7,8,9}};
AFill(a2[1], "One");
AFill(a2[2], "Two");
AFill(a2[3], "Three");
// {{One,One,One},{Two,Two,Two},{Three,Three,Three}};

六、ArrayCalc() 函数

用于对由Option关键字指示的数组执行多个计算类型。

ArrayCalc(Array, Option, SecArray, Beg, Cnt )
RESIZE:
调整大小将更改的实际长度。 新的长度将由<SecArray>指定。
  • 缩短:丢失末尾;(截断数组!)
  • 加长:用NIL填充!

INS:

INS将一个新元素插入到指定的数组中。

新插入的元素为 NIL,直到为其分配一个新值为止。
插入之后,数组长度+1, 新元素之后的所有元素向下移一个位置
:DECLARE res;
res := ArrayCalc({1,2,3},"MAX");
usrmes("res", res);
//Returns: 3 
ArrayCalc({1,2,3},"SUM") 
//Returns: 6 
ArrayCalc({1,2,3},"AVG") 
//Returns: 2
ArrayCalc({1,2,3},”RESIZE”,4) 
//Returns: {1, 2, 3, NIL}

:DECLARE sortArr;
sortArr := {1,2,3};
ArrayCalc(sortArr,"INS",,3);
// {1,2,NIL,3}
usrmes("sortArr=", sortArr);

:DECLARE a3;
a3 := {1,2,3};
ArrayCalc(a3,"FILL",'TRUE',2,2);
//{1,TRUE,TRUE}
usrmes("a3 = ", a3);

:DECLARE copyArr;
copyArr := ArrayNew(3);
/*copyArr := ArrayCalc({3,4,5}, "COPY");*/
//{3,4,5}
copyArr := ArrayCalc({3,4,5}, "COPY", ,1,2);
/*{3,4};*/
usrmes("copyArr=", copyArr);

 七、Ascan() 函数

用于扫描数组,直到找到一个值或代码块返回TRUE。

Ascan(Target Array, Search Value, Start, Count)
:DECLARE MyArray, res;
MyArray := {"John", "Sue", "Dave"}; 
res := Ascan(MyArray, "Sue");
//2
usrmes("res = ", res);

八、BuildArray()函数

用于从带分隔符的字符串中创建数组。(默认是,分隔符)

BuildArray(String, <CR-Flag>, <Separator>, <U-Flag>)

示例:

:DECLARE MyArray, MyArray2;
MyArray := BuildArray("Jim, John, Mary, Sue, Steve,");
//Jim
usrmes(MyArray[1]);

MyArray2 := BuildArray("Jim-John-Mary-Sue-Steve",,'-');
// John
usrmes(MyArray2[2]);

九、BuildArray2()函数

创建二维数组

BuildArray(String, LineSeparator, ColSeparator)
LineSeparator:行分隔符,默认是';'
ColSeparator:列分隔符,默认是','
示例:
:DECLARE MyArray3;
MyArray3 := BuildArray2( "Barry, George"+Chr(59)+"Male, Male", Chr(59), "," );
// Barry
usrmes("MyArray3[1][1]=", MyArray3[1][1]);

注意:

分号用Chr(59)格式!

因为StarLIMS编译器将一个显式的分号解释为代码行的末尾。

十、BuildString() 函数

用于从数组中创建带分隔符的字符串。

BuildString(Array, <Start>, <Count>, <Delimitator>)
:DECLARE aArray, sString;
aArray := {"Elian", "Grace", "Barry", "Gelu"}; 
sString := BuildString(aArray,2,2);
// Grace,Barry
usrmes(sString);

sString2 := BuildString(aArray);
// Elian,Grace,Barry,Gelu
usrmes("sString2", sString2);

十一、BuildString2() 函数

用于从二维数组中创建以分号和逗号分隔的字符串。

BuildString2(array, <LineSeparator>, <ColSeparator>)
:DECLARE sString;
sString := BuildString2({{"Grace","Barry","Charley"},{"Yes","Yes","No"}});
// Grace,Barry,Charley;Yes,Yes,No
usrmes(sString);

十二、CompArray() 函数

用于比较两个数组以匹配内容。这将比较两个数组,并检查以确保结构相同,所有匹配元素是相等的。

CompArray(Array1, Array2)
:DECLARE aArray1, aArray2, aArray3;
aArray1 := {"aa", "bb", "cc"};
aArray2 := {"aa", "bb", "dd"};
aArray3 := {"aa", "bb", "cc"};
// .F.
usrmes(CompArray(aArray1, aArray2));
// .T.
usrmes(CompArray(aArray1, aArray3));

十三、DelArray() 函数

用于从数组中删除元素。数组长度-1,删除元素后的所有元素将被向上移动一个位置。

DelArray(Array, Position Number)
:DECLARE aArray1, aArray2, aArray3;
aArray1 := {"Today", Today(), 3.14, "Tomorrow", Today()+1};
// {Today,05/28/2024,3.14,Tomorrow,05/29/2024}
usrmes(aArray1);

DelArray(aArray1, 3);
{Today,05/28/2024,Tomorrow,05/29/2024}
usrmes(aArray1);

十四、ExtractCol() 函数

用于提取指定数组的某一列,并将其作为单维(向量)数组返回。

ExtractCol(Array, Column num)
:DECLARE aArray1;
aArray1 := ExtractCol({{1,2,3},{3,4,3},{3,5,6}}, 1);
// {1,3,3}
usrmes(aArray1);

十五、SortArray()函数

将数组按照升序排序。

:DECLARE aArray1;
aArray1 := {23,2,14,16,44,8};
SortArray(aArray1);
// {2,8,14,16,23,44}
usrmes(aArray1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652532.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【录用案例】2天录用!提交可录,沾边即可!

本周投稿推荐 SSCI • 2区社科类&#xff0c;3.0-4.0&#xff08;录用友好&#xff09; EI • 计算机工程生物医学等&#xff08;2天录用&#xff09; CNKI • 3天内初审录用&#xff0c;随即出版&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#x…

数据链路层 + NAT技术

数据链路层&#xff1a;负责设备之间的数据帧的传送和识别。 一、以太网 以太网的帧格式 如何分离报头和有效数据&#xff1f; 报头是固定长度的 如何将数据交给上层协议&#xff1f; 通过类型&#xff0c;如果是0800&#xff0c;则交给IP协议&#xff0c;如果是0806&#xf…

JavaScript正则表达式

一、介绍 正则表达式是用于匹配字符串中字符组合的模式。在javascript中&#xff0c;正则表达式也是对象。通常用来查找、替换那些符合正则表达式的文本&#xff0c;许多语言都支持正则表达式。 正则表达式的作用&#xff1a; 表单验证&#xff08;匹配&#xff09;、过滤敏感…

筛斗数据提取:解锁信息宝藏的关键步骤

在数字化时代&#xff0c;数据已成为推动社会进步和企业发展的关键要素。然而&#xff0c;数据本身并不直接产生价值&#xff0c;其价值在于我们如何从中提取有用的信息。数据提取&#xff0c;作为解锁信息宝藏的关键步骤&#xff0c;对于任何希望从海量数据中获取洞察力和竞争…

十四天学会Vue——Vue核心(理论+实战)上篇(第一天)

一、Vue核心&#xff08;上篇&#xff09; 热身tops&#xff1a;选取开发模式 ①用于开发模式 我们只需要知道 我们是开发模式&#xff0c;开发模式他会跟你提示代码出现错误的地方以及出错原因&#xff0c;而生产模式比较简洁。 ②用于生产模式 1.1 new Vue()实例 了解Vue&a…

人脸识别——筛选与删除重复或近似重复数据提高人脸识别的精确度

1. 概述 人脸识别研究通常使用从网上收集的人脸图像数据集&#xff0c;但这些数据集可能包含重复的人脸图像。为了解决这个问题&#xff0c;我们需要一种方法来检测人脸图像数据集中的重复图像&#xff0c;并提高其质量。本文介绍了一种检测人脸图像数据集中重复图像的方法。该…

有趣的css - 双开门按钮

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是一个双开门的按钮&#xff0c;交互效果比较强&#xff0c;但是实现很简单&#xff0c;快学起来吧。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码cs…

充电宝哪家好用推荐?买什么充电宝性价比高?2024年充电宝排行榜

说实话&#xff0c;我其实是个手机重度使用者&#xff0c;买过的充电宝也有无数款了&#xff0c;每次手机没电的时候插座都离得不是特别近&#xff0c;不是要下床充电就是要固定在一个位置充电感觉怪麻烦的&#xff0c;但是有了充电宝后可以在床上玩手机都不用担心手机没电&…

惯性测量单元M-G366PDG提供低误差系数的解决方案

人形机器人、自动驾驶的快速发展&#xff0c;促成了惯性测量单元(IMU)的爆火市场。据相关研究报告统计&#xff0c;IMU全球市场规模从2018年的99.94亿美元增加至2021年的135.95亿美元预计2027年将达到222.53亿美元&#xff0c;2021年至2027年复合增长率达8.56%。而由于智能技术…

VUE3+TS+elementplus创建table,纯前端的table

一、前言 开始学习前端&#xff0c;直接从VUE3开始&#xff0c;从简单的创建表格开始。因为自己不是专业的程序员&#xff0c;编程主要是为了辅助自己的工作&#xff0c;提高工作效率&#xff0c;VUE的基础知识并不牢固&#xff0c;主要是为了快速上手&#xff0c;能够做出一些…

免费,Python蓝桥杯等级考试真题--第13级(含答案解析和代码)

Python蓝桥杯等级考试真题–第13级 一、 选择题 答案&#xff1a;C 解析&#xff1a;正向下标由0开始&#xff0c;下标3代表第四个元素&#xff0c;故答案为C。 答案&#xff1a;A 解析&#xff1a;range&#xff08;0,4&#xff09;的取前不取后&#xff0c;元组的符号是小括…

AI大模型在测试中的深度应用与实践案例

文章目录 1. 示例项目背景2. 环境准备3. 代码实现3.1. 自动生成测试用例3.2. 自动化测试脚本3.3. 性能测试3.4. 结果分析 4. 进一步深入4.1. 集成CI/CD管道4.1.1 Jenkins示例 4.2. 详细的负载测试和性能监控4.2.1 Locust示例 4.3. 测试结果分析与报告 5. 进一步集成和优化5.1. …

Transformer模型的简单学习

前言 Transformer 来源于一篇论文&#xff1a;Attention is all you need TRM在做一件什么事情呢&#xff1f;其实一开始它是被用于机器翻译的&#xff1a; 更详细的&#xff1a; 更详细的&#xff1a; 从上图可以看出&#xff0c;一个Encoders 下面包含了 n 个 Encoder&…

triton之paged attention

一 原理 图解大模型计算加速系列之&#xff1a;vLLM核心技术PagedAttention原理 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/691038809 二 源码分析 1 测试参数设置 test_paged_attention(num_seqs32,num_heads(64, 64),head_size64,block_size16,dtypetorch.float16,…

【ARM+Codesys案例】RK3568 +Codesys 软PLC方案在电镀生产线的应用

1 电镀生产简介 电镀是一种比较重要的工艺&#xff0c;产品经过电镀工艺处理后&#xff0c;不仅产品质量获得提高&#xff0c;产品性能也会大幅度提高&#xff0c;同时延长了产品的使用时间。电镀生产线是指按一定的电镀生产工艺要求,将有关的各种电镀处理槽、电镀行车运动装置…

ubuntu移动硬盘重命名

因为在ubuntu上移动硬盘的名字是中文的&#xff0c;所以想要改成英文的。 我的方法&#xff1a; 将移动硬盘插到windows上&#xff0c;直接右键重命名。再插到ubuntu上名字就改变了。 别人的方法&#xff1a; ubuntu下如何修改U盘名字-腾讯云开发者社区-腾讯云 在自带的软件…

安卓获取内部存储信息

目录 前言获取存储容量 前言 原生系统设置里的存储容量到底是怎么计算的&#xff0c;跟踪源码&#xff0c;涉及到VolumeInfo、StorageManagerVolumeProvider、PrivateStorageInfo、StorageStatsManager......等等&#xff0c;java上层没有办法使用简单的api获取到吗&#xff1f…

力扣239. 滑动窗口最大值

Problem: 239. 滑动窗口最大值 文章目录 题目描述思路复杂度Code 题目描述 思路 1.编写实现优先队列类&#xff1a; 1.1.实现push(int n):将元素n添加到队列尾&#xff0c;同时将n前面大于n的元素删除 1.2.实现int max():将队列头元素取出&#xff08;由于实现了push所以此时队…

「光储充放」一体充电站-一文读懂光储充放充电站

“光储充放”一体充电站作为一种储能充电的新形式渐渐走进人们的生活&#xff0c;全国很多地区都开始陆续投放运营“光储充放”一体充电站&#xff0c;今天的这篇文章&#xff0c;就带大家全面了解“光储充放”这一新型充电站。 头图来源 | 视觉中国 01 政策背景 早在2020年…

AI大模型实现德语口语练习

利用AI大模型实现德语口语练习的应用需要整合多种技术和资源&#xff0c;以确保学生能够获得全面、互动和有效的学习体验。以下是实现德语口语练习应用的详细流程和技术要点。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 实现流程 …