ObjectScript是一种面向对象的编程语言,它是InterSystems公司的Caché和Ensemble数据库的核心语言之一。ObjectScript语言的语法类似于MUMPS语言,它支持面向对象编程、过程式编程、函数式编程等多种编程范式。ObjectScript语言主要用于开发Caché和Ensemble数据库应用程序,它可以访问数据库中的数据、调用数据库中的存储过程、触发器和事件,还可以与其他编程语言进行交互。
Cache使用的语言是ObjectScript简称COS,下面展示的是其基本语法,也是我个人的COS字典:
1 系统指令
SET 缩写 s ,赋值命令,样例 - s hello ="Hello World";
WRITE 缩写 w ,向当前设备输出,样例 - w hello (特殊用法:w ! 换行、w # 清屏 )
DO 缩写 d ,执行函数,样例 – d ##class(%SYSTEM.License).ShowSummary();
Kill 缩写 k ,从堆栈中清楚变量 x,慎用(不加参数调用时候将清楚内存中的所有变量!)样例 - k x
Quit 缩写 q , 返回 样例 - q $$$OK
注意:系统指令不区分大小写,变量和对象大小写敏感
2 数据类型
%Integer 整数型 0,1,2,3,4,5,6......
%Boolean 布尔类型 0-F 1-T
%String 字符串类型 "你好,世界"
%Date 时间类型
更多的数据类型:
3 运算符
数学运算符 加减乘除+,-,*,/ W 2+3+2*2 14 运算时严格从左到右执行,数学运算没有优先级 W 2+3+2*2 9
连字符_ W "shanghai"_"disney"
逻辑运算符 与或非&, ||, ‘ W 1&0
4 流程控制
For 循环 FOR variable=start:increment:end { . . . }
#; 第1种
For i = 1:1:9 {
Write i, !
}
#; 第2种
Set key = ""
For {
Set key = $ORDER(array(key))
Quit:key=""
// process array(key)
}
#; 第3种
For value = "Red","Green","Blue" {
Write value, !
}
ObjectScriptObjectScript
If else判断 IF expression1 { . . . } ELSEIF expression2 { . . . } ELSE { . . . }
If a>0{
w a
}ElseIf a<0&&a=-1{
w a
}ElseIf a<-1{
w a
}else{
w a
}
ObjectScriptObjectScript
While循环 WHILE expression,... { ;. . . }
#; 第1种
Do {
} While (1 /* condition */)
#; 第2种
While (1 /* condition */) {
}
ObjectScriptObjectScript
5 系统变量
当前时间 $Horolog — W $H
时间戳 $ZTIMESTAMP — w ZTS
系统版本 $ZVERSION — W $ZV
注意:系统变量不区分大小写
更多系统变量
https://docs.intersystems.com/healthconnect20201/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_VARIABLES
6 函数
字符串类型与日期类型相互转换: $ZDH/$ZD
— w $ZDH("2017-03-13",3)
— w $zd(0)
字符串截取函数: $piece
— W $P("This is training", " ",3)
字符串比较替换函数: $Case
— W $case(10,1:"100",2:"200",:"1000")
按值查找,并返回一个整数,该整数指定子字符串中的结束位置 $FIND
w $f("acvs","c",1) 输出为字符串的位置,输出为0标识不存在
更多函数:
https://docs.intersystems.com/healthconnect20201/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_FUNCTIONS
7 Global
Global算是IRIS的一个特殊概念,其实可以把它理解为可以持久化的多维数组,下面展示的是把Global当成多维数组的处理方式
下标:可以是数字也可以是字符串
操作:赋值 - set(s) 、删除 - kill(k)
持久化:多维数组命名时候以 ^ 开头,会按下标存储,如果用的是HealthConnect或者IRISHealth在【系统资源管理器】- 【Global】中可以看到。
样例:
s a = 1,a(1) = "a",a(1,1) = "b",a(1,1,"wow") = "foo",a(1,2) = "c",a(2) = 0 zw a
(这里,的意思代表省略了前面的 set 系统指令)如图:
这是我早些时候的笔记,可能至今还有一些错误,希望有看出问题的大佬指正。
非常棒的分享!