文章
Jingwei Wang · 八月 25 阅读大约需 4 分钟

Object Script 基础知识(二)

Object Script(二)

ObjectScript没有定义任何保留字:你可以自由地使用任何字作为标识符(如变量名)。为了达到这个目的,ObjectScript使用了一组内置的命令以及特殊的字符(比如函数名的"$"前缀),以便将标识符与其他语言元素区分开来。

 

示例

含义

abc^def

调用routine中的一个标签:

def是一个routine,abc是该routine中的一个标签。

i%abcdef

 

i%<PropertyName>

用于从实例变量自身的Get或Set访问器方法中引用该变量,或者绕过其Get或Set方法

abc->def

 

这种语法只在InterSystems的SQL语句中可以使用。它指定了一个隐含的左外连接。abc是你正在查询的类中的一个对象值字段,def是子类中的一个字段。

abc?def

 

一个问号是模式匹配操作符,测试变量abc中的值是否与def中指定的模式相匹配

abc[def

 

左括号([)是二进制包含运算符。这个表达式检测字符串"abc "是否包含字符串 "def"

abc]def

 

右括号(])是二进制跟随运算符。这个表达式检测字符串"abc "是否在字符串 "def "之后,以ASCII的顺序排列。

abc]]def

 

两个右括号(]])是二进制排序运算符。这个表达式检测字符串 "abc "是否排在字符串 "def "之后,以数字下标排序。

..

 

相对点语法,两个句号组成,是一个类成员内部对另一个类成员的引用的开始。或者用于访问当前对象的一个属性或调用一个方法

 

##Class()

 

用于调用一个类的方法,将一个对象引用转换为另一个类来调用一个方法,或者用于访问一个类参数的值。

 

##super

 

用于从子类方法中调用父类方法

 

$abc

 

系统变量或自定义变量

 

$abc()

 

系统函数或者自定义函数,括号中可用逗号分隔参数

 

$abc.def.ghi(xxx)

 

$abc是$SYSTEM,def是%SYSTEM包中的类的名称,ghi是该类中一个方法的名称,xxx是该方法的一个可选的逗号分隔的参数列表

 

$SYSTEM%SYSTEM包的别名,用来提供对该包中类的方法的访问

$$abc

 

abc是一个宏,美元符号不是其名称的一部分

$$abc()

 

是一个定义在包含此引用的routine或函数中的子程序。这种语法调用子程序abc并获得其返回值

%abc

 

InterSystems IRIS系统类中的大多数包、类和方法都以百分号开头。也有可能是InterSystems IRIS设置的一个局部变量,Routine或者嵌入SQL变量

 

%%abc

 

有关于InterSystems SQL,是伪字段的关键字

 

^abc

 

一个函数或者一个执行程序(Roution),也可表示为全局参数

 

^$abc

 

结构化的系统变量

 

^||abc

 

进程私有的全局参数,是一个用于临时存储大数据值的机制

 

^[XXX]%abc

 

对另一个名字空间中的全局或例程的引用

 

 

变量/函数/类

含义

$SYSTEM

提供系统信息

$HOROLOG 

 

当前进程的日期和时间

$zv

 

系统版本信息

$ZDH()

 

用于检验日期格式,并将可读的日期格式转换成InterSystems IRIS 数据库可读格式

 

$zd()

 

用于检验日期格式,并将InterSystems IRIS数据库日期格式转换成可读的日期格式。

 

示例:

字符串类型与日期类型相互转换:$ZDH/$ZD

w $ZDH("2017-03-13",3)
w $zd(0)

$Random(range)

 

返回符合范围内的随机正整数

$zlog()

 

Log指数计算

 

$zsqr()

 

平方根计算

 

$Case

 

根据第一个参数,可以返回相关的值,类似于Switch case。或者返回一个procedure或者一个routine

 

示例:

s x =2
w $CASE(x,1:"single",2:"double",3:"triple",:"input error") 

 

 

本地数组:生命周期在当前进程

      SET a(1) = "A local variable array"

              SET a(1,1,1) = "Another local variable array"

 

全局数组:持久化数组,直接存于磁盘

              SET ^||a(1) = "A process-private global array"

              SET ^a(1) = "A global array"  

 

00
1 0 0 66
Log in or sign up to continue