美文网首页
第三十四章 Caché 命令大全 ZKILL 命令

第三十四章 Caché 命令大全 ZKILL 命令

作者: Cache技术分享 | 来源:发表于2020-08-03 07:45 被阅读0次

    第三十四章 Caché 命令大全 ZKILL 命令

    删除节点,同时保留该节点的子代。

    大纲

    ZKILL:pc array-node,...
    ZK:pc array-node,...
    

    参数

    • pc - 可选-后置条件表达式。
    • array-node 局部变量、进程私有全局变量或作为数组节点的全局变量,或局部、进程私有全局变量或全局数组节点的逗号分隔列表。

    描述

    ZKILL命令删除指定数组节点的值,而不会杀死该节点的后代。相反,kill命令删除指定数组节点的值以及该节点的所有子代。数组节点可以是局部变量、进程私有变量或全局变量。

    默认情况下,任何后续对此已终止数组节点的引用都会生成一个<unfined>错误。通过设置%SYSTEM.Process.Unfined()方法,可以更改Caché 行为,使其在引用未定义的下标变量时不生成<unfined>错误。

    参数

    pc

    可选的后置条件表达式。如果后置条件表达式为TRUE(计算结果为非零数值),则Caché执行该命令。如果后置条件表达式为假(计算结果为零),则Caché不执行该命令。

    array-node

    本地、进程专用全局变量或全局数组节点。可以指定单个数组节点,也可以指定逗号分隔的数组节点列表。尝试对结构化系统变量(SSVN)(例如^$GLOBAL)使用ZKILL会导致<command>错误。

    示例

    在本例中,ZKILL命令删除节点a(1),但不删除节点a(1,1)

    /// d ##class(PHA.TEST.Command).TestZKill()
    ClassMethod TestZKill()
    {
        SET a(1)=1,a(1,1)=11
        SET x=a(1)
        SET y=a(1,1)
        ZKILL a(1)
        SET z=a(1,1)
        WRITE "x=",x," y=",y," z=",z
    }
    
    

    返回x=1 y=11 z=11

    DHC-APP>d ##class(PHA.TEST.Command).TestZKill()
    x=1 y=11 z=11
    

    。但是,然后发出:

    WRITE a(1)
    
    DHC-APP 2d1> d ##class(PHA.TEST.Command).TestZKill()
    x=1 y=11 z=11
        WRITE a(1) }
        ^
    <UNDEFINED>zTestZKill+7^PHA.TEST.Command.1 *a(1)
    

    生成<UNDEFINED>错误。

    对比KILL

    /// d ##class(PHA.TEST.Command).TestZKillK()
    ClassMethod TestZKillK()
    {
        SET a(1)=1,a(1,1)=11
        SET x=a(1)
        SET y=a(1,1)
        KILL a(1)
        SET z=a(1,1)
        WRITE "x=",x," y=",y," z=",z
    }
    
    
    DHC-APP>d ##class(PHA.TEST.Command).TestZKillK()
     
        SET z=a(1,1)
        ^
    <UNDEFINED>zTestZKillK+5^PHA.TEST.Command.1 *a(1,1)
    

    相关文章

      网友评论

          本文标题:第三十四章 Caché 命令大全 ZKILL 命令

          本文链接:https://www.haomeiwen.com/subject/iiqvrktx.html