命令后置条件表达式
- 后置条件是附加到命令或控制Caché是否执行该命令或命令参数的命令参数的可选表达式。如果后置条件表达式的计算结果为
TRUE
,则Caché将执行命令或命令参数。决定Caché是否执行该命令或命令参数。后置条件表达式的计算结果为FALSE
,则Caché不执行命令或命令参数,并从下一个命令或命令参数继续执行。 - 除了控制流命令(
IF
、ELSEIF
和ELSE
;FOR
、WHILE
和DO WHILE
)和块结构错误处理命令(TRY
、THROW
、CATCH
)之外,所有ObjectScript命令都可以采用后置条件表达式。(后置表达式是可选的) - 如果命令关键字和该命令一个或多个参数都指定了后置条件,则首先计算关键字的后置表达式。
- 要向命令添加后置条件,请在
COMMAND
关键字后面紧跟一个冒号(:
)和表达式,以便具有后置条件表达式的命令的语法为:
Command:pc 复制代码
s count = 4 w:count<5 "count < 5",! s count = 6 w:count>5 "count > 5",! 复制代码
赋值命令
SET
为变量赋值。KILL
删除为变量赋值的操作。NEW
为变量赋值建立新的上下文。MERGE
将全局变量节点或多维数组合并到目标变量。ZKILL
删除节点,同时保留该节点的子代。
Set命令
set
命令为变量赋值。它可以为单个变量赋值,也可以同时为多个变量赋值。
如果指定的变量不存在,则SET
会创建该变量并赋值。如果存在指定的变量,则SET
将用指定的值替换先前的值。由于SET
按从左到右的顺序执行,因此可以为一个变量赋值,然后将该变量赋值给另一个变量。
set
的最基本语法是:
SET variable = expression 复制代码
//将yx变量的值设置为yaoxin s yx = "yaoxin" 复制代码
- 要设置多个变量中每个变量的值,请使用以下语法:
SET variable1 = expression1, variable2 = expression2, variable3 = expression3 复制代码
//设置多个变量中每个变量的值 s yx = "yaoxin", yx1 = "yao", yx2 = "xin", 复制代码
- 通过单次调用
set a=value、b=value、c=value、...
,可以执行的赋值次数没有限制。 - 要将多个变量设置为等于单个表达式(效率最高),请使用以下语法:
SET (variable1,variable2,variable3)= expression 复制代码
//同时设置yx, yx1, yx2的置为yaoxin s (yx, yx1, yx2) = "yaoxin" 复制代码
- 单次调用
set(a,b,c,...)=value
可以执行的最大赋值数量是128
。超过此数字会导致<SYNTAX>
错误。 - 可以使用
set
调用返回值的方法。
// 其中ClassMethodName()是要调用的类方法的名称,ClassName是包含方法的类的名称,PackageName是包含类的包的名称。该方法的返回值被赋给retval局部变量。##class()构造是代码中必需的文字部分。 SET retval = ##class(PackageName.ClassName).ClassMethodName() 复制代码
//当前电脑的名称为LAPTOP-ARLL3DSO s x = ##class(%SYS.System).GetNodeName() 复制代码
- 可以赋值
JSON
对象和数组。
//赋值JSON对象 s json = {"name":"yaoxin","age":31,"gender":"男"} q json.%ToJSON() 复制代码
//赋值JSON数组 s json = ["yaoxin",31,"男"] q json.%ToJSON() 复制代码
//嵌套JSON s json = {"name":"yaoxin","age":31,"gender":"男","row":["yaoxin",31,"男"]} q json.%ToJSON() 复制代码
- 可以将
$PIECE
和$EXTRACT
函数与等号两侧的SET一起使用。当在等号的右侧使用时,$PIECE
和$EXTRACT
从变量中提取子字符串,并将其值分配给等号左侧的指定变量。$PIECE
使用指定的分隔符提取子字符串,而$EXTRACT
使用字符计数提取子字符串。
s A = "1^2^3^4^5^6^7^8^9" s $p(A, "^") = "abc" w !,"A = ",A s A = "123456789" s $e(A) = "abc" w !,"A = ",A