Merge命令

简介: Merge命令

New命令

支持以下语法形式:

NEW          // 为所有局部变量启动新上下文
 NEW x        // 为指定的局部变量启动新上下文
 NEW x,y,z    // 为列出的局部变量启动新上下文
 NEW (y)      // 为除指定变量之外的所有局部变量启动新上下文
 NEW (y,z)    // 为除列出的变量之外的所有局部变量启动新上下文
复制代码

NEW命令不能用于以下内容:

  • Globals 全局变量
  • Process-Private Globals 私有进程全局变量
  • Local variable subscripts 局部变量下标
  • 特殊变量,$ESTACK$ETRAP$NAMESPACE$ROLES除外

在这些上下文中使用NEW都会报<SYNTAX>错误。

  • 在程序中也就是类程序中,默认都是私有变量不能NEW。如果要使用NEW命令需要在类添加关键字Not ProcedureBlock
Class XX Extends %RegisteredObject [Not ProcedureBlock]
{
}
复制代码
  • 无参数new,初始化所有变量。
ClassMethod New()
{
  s a = 1, b = 2, c = 3, d = 4, e = 5
  w !,"NEW之前:",!
  zw
  n 
  w !,"NEW之后:",!
  zw
  q ""
}
复制代码
  • 带参数new,只初始化列表里的变量。
ClassMethod New1()
{
  s a = 1, b = 2, c = 3, d = 4, e = 5
  w !,"NEW之前:",!
  zw
  n d,e
  w !,"NEW之后:",!
  zw
  q ""
}
复制代码
  • 独占new,替换本地变量环境中除指定变量之外的所有现有变量。除了括号里的变量其他变量都初始化。
ClassMethod New2()
{
  s a = 1, b = 2, c = 3, d = 4, e = 5
  w !,"NEW之前:",!
  zw
  n (d,e)
  w !,"NEW之后:",!
  zw
  q ""
}
复制代码
  • 独占NEW最多可以指定255个变量作为逗号分隔的列表。 超过此数字Caché发出<SYNTAX>错误。
  • 尝试发出超过31个级别的独占NEW或无参数NEW会导致<MAXSCOPE>错误。
ClassMethod New3()
{
  for i = 1 : 1 : 32 {
    w i, !
    n (i)
  }
  q ""
}
复制代码

Merge命令

将全局变量或多维数组节点并到目标变量。

  • MERGE将数据源复制到目标变量,并将数据源的所有后代复制到目标的后代。它不修改数据源,也不终止目标中的任何节点。MERGE 简化了将变量的子树(多个下标)复制到另一个变量的过程。这两个变量都可以是带下标的局部变量、进程私有全局变量或全局变量。子树是指定变量的后代的所有变量。
  • Merge为当前的节点复制技术提供了命令替代方案:带有$ORDER引用的SET命令。
/// d ##class(YX.M16).Merge()
ClassMethod Merge()
{
  k ^a,^b
  s ^a="cartoons"
  s ^a(1)="The Flintstones",^a(2)="The Simpsons"
  s ^a(1, 1)="characters",^a(1, 2)="place names"
  s ^a(1, 1, 1)="Flintstone family"
  s ^a(1, 1, 1, 1)="Fred"
  s ^a(1, 1, 1, 2)="Wilma"
  s ^a(1, 1, 2)="Rubble family"
  s ^a(1, 1, 2, 1)="Barney"
  s ^a(1, 1, 2, 2)="Betty"
  m ^b = ^a(1,1)
  zw ^b
}
复制代码

假设如图^X^Y的初始结构

MERGE ^X(2,3)=^Y(3,6,7,8)
复制代码

发出以上语句时,Caché会将^Y的一部分复制到^X(2,3)中。现在,全局变量^X的结构如下图所示。

Merge命令的^X^Y的结果

ClassMethod Merge1()
{
  k ^X,^Y
  s ^X(2,2)="first"
  s ^X(2,2,4)="second"
  s ^Y(3,6,7)="third"
  s ^Y(3,6,8)="fourth"
  s ^Y(3,6,7,8,4)="fifth"
  s ^Y(3,6,7,8,9)="sixth"
  merge ^X(2,3)=^Y(3,6,7,8)
  zw ^X
  zw ^Y
}


相关文章
|
9月前
|
机器学习/深度学习 人工智能 并行计算
【AI系统】Kernel 层架构
推理引擎的Kernel层负责执行底层数学运算,如矩阵乘法、卷积等,直接影响推理速度与效率。它与Runtime层紧密配合,通过算法优化、内存布局调整、汇编优化及调度优化等手段,实现高性能计算。Kernel层针对不同硬件(如CPU、GPU)进行特定优化,支持NEON、AVX、CUDA等技术,确保在多种平台上高效运行。
268 32
|
10月前
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
501 14
|
消息中间件 Java Maven
springboot 使用注解的方式创建rabbitmq的交换机、路由key、以及监听队列的名称
springboot 使用注解的方式创建rabbitmq的交换机、路由key、以及监听队列的名称
|
11月前
交换机中创建MAC地址表
【10月更文挑战第1天】
343 2
|
人工智能 测试技术 计算机视觉
7B最强长视频模型! LongVA视频理解超千帧,霸榜多个榜单
【8月更文挑战第1天】新模型LongVA实现7B级最强长视频理解!通过长上下文转移技术,LongVA能够处理超千帧视频,显著提升长视频理解精度。不同于传统模型依赖视觉重采样导致的信息损失,LongVA扩展语言主干上下文长度,无需额外视频训练即可理解大量视觉标记。在V-NIAH等基准上取得SOTA成绩,处理2000帧以上视频无额外复杂度增加。但实时应用及非视频任务仍面临挑战。[论文](https://arxiv.org/abs/2406.16852)
288 4
|
弹性计算 固态存储 ice
阿里云服务器ECS内存型r8i、通用算力u1、r7、AMD内存r8a、高主频内存hfr8i价格和性能差异
2024年阿里云提供2核16G、4核32G及8核64G等多种服务器配置,用户可根据需求选择不同实例规格如内存型r8i、通用算力型u1等。以华北2(北京)为例,2核16G月费从286.2元起,4核32G从572.4元起,8核64G则从1144.8元起。公网带宽1Mbps预付费为23元/月,系统盘如ESSD PL1按量计费0.0021元/小时/GiB。具体价格与折扣请参考阿里云官网。
基于element-plus实现vue3+ts后台管理系统的组件封装(只需传入配置对象,就可以渲染出一个页面(表单+表格))
基于element-plus实现vue3+ts后台管理系统的组件封装(只需传入配置对象,就可以渲染出一个页面(表单+表格))
|
安全 JavaScript 前端开发
[网络安全]XSS之Cookie外带攻击姿势及例题详析
XSS 的 Cookie 外带攻击就是一种针对 Web 应用程序中的 XSS(跨站脚本攻击)漏洞进行的攻击,攻击者通过在 XSS 攻击中注入恶意脚本,从而窃取用户的 Cookie 信息。
1088 0
|
人工智能 计算机视觉 Ruby
CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识(二)
CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识(二)
774 0

热门文章

最新文章