匹配模式间接寻址

简介: 匹配模式间接寻址

匹配模式间接寻址

匹配模式间接寻址是间接寻址的一种特殊形式。间接运算符替换模式匹配。间接的值必须是有效的模式。

  • 间接寻址与模式匹配一起使用,以检查有效的15位身份证或18位身份证。
ClassMethod Indirection5(id)
{
  s pattern = "18N"
  s:($length(id) = 15) pattern = "15N"
  if id ? @pattern { 
    w !,"有效身份证"
  }
}
复制代码

在模式匹配中使用间接寻址是定位应用程序中使用的模式匹配的一种便捷方式。在这种情况下,可以将模式存储在单独的变量中,然后在实际的模式匹配测试中间接引用它们。只需要修改模式匹配变量本身。

参数间接寻址

在参数间接寻址中,间接寻址计算一个或多个命令参数。

ClassMethod Indirection6()
{
  s a = "var1",b = "var2 = 3 * 4 + var1"
  s @a = 5*6
  s @b
  w "a = ",a,!
  w "b = ",b,!
  w @a,!
  s var2 = 3
  s var1 = 6
  w @b,!
}
复制代码

下标间接寻址

下标间接寻址是名字间接寻址的扩展形式。在下标间接寻址中,间接寻址的值必须是本地或全局数组节点的名称。下标间接在语法上不同于其他形式的间接。下标间接使用以下格式的两个间接运算符:

@array@(subscript) 
复制代码
ClassMethod Indirection7()
{
  k ^color
  s ^color(1) = "red"
  s ^color(2) = "yellow"
  s ^color(3) = "black"
  s ^color(4) = "green"
  s ^color(5) = "write"
  s ^color(1, 1) = "red1"
  s ^color(1, 2) = "red2"
  s ^color(1, 3) = "red3"
  s ^color(1, 4) = "red4"
  s ^color(1, 5) = "red5"
  zw ^color
  s global = "^color"
  s node = "1"
  s sub = "1"
  w @global@(node, sub),!
  //w @global(node, sub),!
  s ID = ""
  for {
    s ID = $o(^color(ID))
    q:(ID = "")
    s data = $zr
    w @data,!
    s sub = ""
    for {
      s sub = $o(^color(ID , sub))
      q:(sub = "")
      w "Indirection:" _ @global@(ID, sub),!
    }
  }
}
复制代码
  • 自定义全局变量名称,节点名称使用下标间接寻址输出。
/// Sample.PersonD
ClassMethod Indirection8()
{
  r !,"global bame: ", name
  r !,"start: ", start
  r !,"end: ", end
  s array = "^" _ name
  s subNode = "Employee"
  for i = start : 1:end {
    if ($d(@array@(i))) {
      //w "@array@("_ i _"):" _ @array@(i),!
      w "@array@("_ i _"):" _ $li(@array@(i), 3),!
    }
    if ($d(@array@(i, subNode))){
      //w "@array@("_ i _ "," _ subNode _ "):" _ @array@(i, subNode),!
      w "@array@("_ i _"):" _ $li(@array@(i, subNode), 1),!
    }
  }
  q
}


相关文章
|
C# 前端开发
WPF DatePicker默认显示当前日期,格式化为年月日
原文:WPF DatePicker默认显示当前日期 WPF的日历选择控件默认为当前日期,共有两种方法,一种静态,一种动态。 静态的当然写在DatePicker控件的属性里了,动态的写在对应的cs文件里,具体请看下面。
6846 0
npm 启动报错 解决 events.js:174 throw er; // Unhandled 'error' event 的报错问题
npm 启动报错 解决 events.js:174 throw er; // Unhandled 'error' event 的报错问题
npm 启动报错 解决 events.js:174 throw er; // Unhandled 'error' event 的报错问题
|
10月前
|
前端开发 算法 Java
通义灵码2.0给人带来一种全新的开发辅助体验。
通义灵码2.0给人带来一种全新的开发辅助体验。
|
10月前
|
机器学习/深度学习 人工智能 供应链
宜家是如何通过实施30000个AI应用实例来驱动家居零售新体验的
宜家是如何通过实施30000个AI应用实例来驱动家居零售新体验的
|
11月前
|
人工智能 算法 数据处理
InternLM3开源发布!4T数据达到18T效果,成本省75%,首度融合深度思考与对话能力!
1月15日,上海人工智能实验室对书生大模型进行重要版本升级,书生·浦语3.0(InternLM3)通过精炼数据框架,大幅提升了数据效率,并实现思维密度的跃升。仅使用4T训练数据的InternLM3-8B-Instruct,其综合性能超过了同量级开源模型,节约训练成本75%以上;同时,InternLM3首次在通用模型中实现了常规对话与深度思考能力融合,可应对更多真实使用场景。
356 1
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
187 0
|
API 调度 Android开发
Android经典实战之处理后台任务的2个工具
本文介绍Android后台任务管理,涵盖WorkManager与JobScheduler的使用方法及区别。WorkManager属Jetpack库,确保任务可靠执行,支持延迟与条件依赖。JobScheduler则针对特定条件下的任务调度,如网络类型。两者各有优势,WorkManager适用于多数场景。
396 0
|
存储 负载均衡 并行计算
实现优雅并行编程:确保正确性与提升性能的关键要素
在程序开发中,并行编程一种利用多个处理器或计算资源同时执行多个任务的编程方式,它能够提高计算效率和性能,是提高计算效率和性能的关键手段,但它也带来了一系列复杂的问题,涉及到任务分解、数据同步、资源分配等诸多复杂问题,稍有不慎就可能导致性能瓶颈、死锁甚至数据不一致等状况。编写优雅的并行程序需要在保证程序正确性的前提下,实现高效的并行计算。那么本文就来探讨一下如何在保证程序正确性的前提下,实现优雅的并行程序,以提升计算效率和性能,包括任务分解、数据同步和资源分配等方面的关键要素,希望能够为读者提供一些有用的指导和启示。
337 2
实现优雅并行编程:确保正确性与提升性能的关键要素
|
数据采集 搜索推荐 数据安全/隐私保护
使用httpx异步获取高校招生信息:一步到位的代理配置教程
2024年中国高考临近,考生需及时获取高校招生信息。使用Python httpx库的异步功能可提高爬虫效率,尤其在处理大量请求时。结合爬虫代理IP,能避免IP封禁,确保数据抓取的连续性。文章介绍了招生趋势、特点,如多样化政策、多平台信息发布、个性化招生等,并提供了使用httpx异步请求和代理的代码示例,帮助开发者高效抓取高校专业与课程设置。
457 0
使用httpx异步获取高校招生信息:一步到位的代理配置教程
|
存储 编解码 JSON
利用SwiftUI构建高效iOS天气应用
【4月更文挑战第21天】 在本文中,我们将深入探讨如何运用SwiftUI框架打造一个响应迅速且用户友好的iOS天气应用程序。我们将重点放在利用SwiftUI的声明式语法简化界面开发,并通过结合Core Location和Networking APIs实现实时天气数据的获取与展示。文章将详细阐述整个开发过程,包括API集成、数据模型设计、用户界面布局以及动态适配不同屏幕尺寸的策略。