持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第40天,点击查看活动详情
命令后置条件表达式
- 后置条件是附加到命令或控制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