Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

部分

作者头像
冬夜先生
发布于 2022-01-05 01:58:36
发布于 2022-01-05 01:58:36
50600
代码可运行
举报
文章被收录于专栏:csicocsico
运行总次数:0
代码可运行

部分文档是M的程序,由多个名为表达式。

section-document:       section section:       文字属性opt section section-name ; section-members opt section-name:       标识符 section-members:       section-member section-members opt section-member:       文字属性opt sharedopt section-member-name = expression ; section -成员名称:       标识符

在 M 中,节是一个组织概念,它允许在文档中对相关表达式进行命名和分组。每个部分都有一个section-name,它标识该部分并限定在该部分中声明的部分成员的名称。甲sectionmember由一个的成员名表达。节成员表达式可以通过成员名直接引用同一节内的其他节成员。

以下示例显示了一个部分文档:

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
section Section1; 

A = 1;                          //1     
B = 2;                          //2 
C = A + B;                      //3

节成员表达式可以通过section-access-expression引用位于其他节中的节成员,该表达式用包含节的名称限定节成员名称。

section-access-expression:       标识符 ! 标识符

以下示例显示了一组包含相互引用的部分的两个文档:

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
section Section1; 
A = "Hello";                    //"Hello" 
B = 1 + Section2!A;             //3

section Section2; 
A = 2;                          //2 
B = Section1!A & " world!";     /"Hello, world"

节成员可以选择声明为shared,这样在引用包含节之外的共享成员时就不需要使用节访问表达式。外部节中的共享成员可以用它们的非限定成员名引用,只要在引用节中没有声明同名的成员,并且没有其他节具有同名共享成员。

以下示例说明了共享成员在同一组文档中跨节使用时的行为:

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
section Section1;  
shared A = 1;        // 1 

section Section2; 
B = A + 2;           // 3 (refers to shared A from Section1) 

section Section3; 
A = "Hello";         // "Hello" 
B = A + " world";    // "Hello world" (refers to local A) 
C = Section1!A + 2;  // 3

在不同的部分定义一个同名的共享成员会产生一个有效的全局环境,但是访问共享成员会在访问时引发错误。

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
section Section1; 
shared A = 1; 

section Section2; 
shared A = "Hello"; 
 
section Section3; 
B = A;    //Error: shared member A has multiple definitions

在评估一组部分文档时,以下内容成立:

  • 每个部分名称在全局环境中必须是唯一的。
  • 在一个部分内,每个部分成员必须有一个唯一的部分成员名称
  • 访问共享成员时,具有多个定义的共享节成员会引发错误。
  • 一个表达组件部构件的部分构件被访问之前,必须不进行评估。
  • 在评估部分成员的表达式组件时引发的错误在向外传播之前与该部分成员相关联,然后在每次访问该部分成员时重新引发。

文件链接

一组 M 节文档可以链接到一个不透明的记录值,每个节文档的共享成员都有一个字段。如果共享成员的名称不明确,则会引发错误。

结果记录值在执行链接过程的全局环境中完全关闭。因此,这些记录是从其他(链接的)M 个文档集组成 M 个文档的合适组件。没有命名冲突的机会。

标准库函数Embedded.Value可用于检索对应于重用 M 组件的此类“嵌入”记录值。

文件自省

M 通过#sections#shared关键字提供对全局环境的编程访问。

#sections

#sections内在变量返回地球环境作为记录中的所有部分。该记录以部分名称为键,每个值都是由部分成员名称索引的相应部分的记录表示。

以下示例显示了一个由两个部分组成的文档,以及通过#sections在该文档的上下文中评估内在变量而生成的记录:

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
section Section1; 
A = 1; 
B = 2;  

section Section2;
C = "Hello"; 
D = "world"; 
 
#sections 
//[ 
//  Section1 = [ A = 1, B = 2], 
//  Section2 = [ C = "Hello", D = "world" ] 
//] 

评估时,以下内容成立#sections

  • #sections固有变量保存在文档内的所有部件表达式的计算状态。
  • #sections内在变量不会强迫任何未计算部分成员的评价。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++进阶篇】C++11新特性(上篇)
列表初始化 { } 几乎适用于任意数据类型,成为现代编码的推荐方式。合理利用其特性可以可显著提升可读性和健壮性。
熬夜学编程的小王
2025/06/10
580
【C++进阶篇】C++11新特性(上篇)
基本概念
单个数据称为值。从广义上讲,值有两大类:原始值,它们是原子的;结构化值,由原始值和其他结构化值构成。例如,值
冬夜先生
2022/01/04
3960
.NET Core采用的全新配置系统[2]: 配置模型设计详解
在《.NET Core采用的全新配置系统[1]: 读取配置数据》中,我们通过实例的方式演示了几种典型的配置读取方式,其主要目的在于使读者朋友们从编程的角度对.NET Core的这个全新的配置系统具有一个大体上的认识,接下来我们从设计的维度来重写认识它。通过上面演示的实例我们知道,配置的编程模型涉及到三个核心对象,它们分别是Configuration、ConfigurationSource和ConfigurationBuilder。如果从设计层面来审视这个配置系统,还缺少另一个名为ConfigurationP
蒋金楠
2018/01/15
7180
.NET Core采用的全新配置系统[2]: 配置模型设计详解
共享
以下示例显示了具有两个共享成员的文档以及通过在该文档的上下文中评估 #shared 内部变量而生成的相应记录:
冬夜先生
2022/01/05
8140
关键字和预定义标识符
元数据表达式:       一元表达式       一元表达式 meta 一元表达式
冬夜先生
2022/01/05
5550
yara匹配引擎进阶语法指南
具备检测相关经验的同学可能都对yara匹配引擎比较熟悉了,看雪论坛上也有非常详细的翻译文章 - 编写Yara规则检测恶意软件 本文主要对yara文档容易被忽略的部分进行了翻译和总结,并且给出一些进阶用法的例子,提高对yara匹配引擎语法的理解程度。
用户1879329
2023/02/27
1.7K0
yara匹配引擎进阶语法指南
常用模块
## 一、time与datetime模块 在Python中,通常有这几种方式来表示时间:
hankleo
2020/09/16
1.6K0
常用模块
词汇结构
M文档是 Unicode 字符的有序序列。M 允许在 M 文档的不同部分使用不同类别的 Unicode 字符。有关 Unicode 字符类的信息,请参阅The Unicode Standard, Version 3.0 , section 4.5。
冬夜先生
2022/01/04
1.3K0
嵌入式链接脚本(LINK SCRIPT)介绍
每一个链接过程都由链接脚本(linkerscript, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情. 连接器有个默认的内置连接脚本, 可用ld--verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响). -T选项用以指定自己的链接脚本, 它将代替默认的连接脚本。你也可以使用<暗含的连接脚本>以增加自定义的链接命令. 以下没有特殊说明,连接器指的是静态连接器.
心跳包
2020/08/31
2.5K0
ASP.NET Core的配置(2):配置模型详解
在上面一章我们以实例演示的方式介绍了几种读取配置的几种方式,其中涉及到三个重要的对象,它们分别是承载结构化配置信息的Configuration,提供原始配置源数据的ConfigurationProvider,以及作为“中间人”的ConfigurationBuilder。接下来我们将会对由这三个核心对象组成的配置模型进行详细介绍,不过在此之前我们有必要来认识配置信息在不同载体中所体现出来的三种结构。 目录 一、配置的三种结构 逻辑结构 原始结构 物理结构 结构转换 二、Configuration 三、Co
蒋金楠
2018/01/15
1.4K0
ASP.NET Core的配置(2):配置模型详解
记录
一个记录值是字段的有序序列。甲字段由一个的字段名,这是一个文本值唯一地标识记录内的字段,以及字段值。字段值可以是任何类型的值,包括记录。可以使用初始化语法构造记录,如下所示:
冬夜先生
2022/01/05
5560
类型
甲类型值是这样的值,分类的其它值。按类型分类的值被称为符合该类型。M型系统由以下几种类型组成:
冬夜先生
2022/01/05
5150
现场访问
该字段存取表达用于选择从记录中的值或将投射一个记录或表一个具有更少的字段或列,分别。
冬夜先生
2022/01/05
8820
[ASP.NET Core 3框架揭秘] 配置[3]:配置模型总体设计
在《读取配置数据》([上篇],[下篇])上面一节中,我们通过实例的方式演示了几种典型的配置读取方式,接下来我们从设计的维度来重写认识配置模型。配置的编程模型涉及到三个核心对象,分别通过三个对应的接口(IConfiguration、IConfigurationSource和IConfigurationBuilder)来表示。如果从设计层面来审视背后的配置模型,还缺少另一个名通过IConfigurationProvider接口表示的核心对象。总的来说,配置模型由这四个核心对象组成,但是要彻底了解这四个核心对象之间的关系,我们先得来聊聊配置的几种数据结构。
蒋金楠
2019/12/16
4460
[ASP.NET Core 3框架揭秘] 配置[3]:配置模型总体设计
Python-执行系统命令
执行系统命令 os.system os.spawn* os.popen popen2.* commands.* 后面三个已经废弃,以上执行shell命令的相关的模块和函数的功能均在subprocess模块中实现,并提供了更加丰富的功能 call 执行命令,返回状态码。 import subprocess ret1 = subprocess.call(["ls","-l"],shell=False) print ret1 ret2 = subprocess.call("ls -l",shell=True) p
洗尽了浮华
2018/01/22
8840
Python-执行系统命令
asp.net core 系列之Configuration
在ASP.NET Core中的App configuration 是通过configuration providers基于key-value对建立的。Configuration providers读取配置文件到key-value,从多种配置源中:
Vincent-yuan
2019/09/11
1.5K0
asp.net core 系列之Configuration
AutoMapper使用手册(一)
介绍 AutoMapper是一个轻量级的类库,主要功能是把一个对象转换成另外一个对象,而避免我们每次都手工去转换。 常见几种使用场景: 对外服务接口,把逻辑层的实体转换成服务消费者需要的字段。 UI展现层,把业务对象转换成UI需要展现的字段。 用户的输入输出,把DTO与领域模型互转。 AutoMapper支持的平台: .NET 4+ Silverlight 5 Windows Phone 8+ .NET for Windows Store apps (WinRT) Windows Uni
蘑菇先生
2018/05/21
2.1K0
C#编码规范2 C#编码规范
3.1 代码注释约定............................................ 3
vv彭
2020/10/27
2.8K0
C#编码规范2
    


C#编码规范
写函数
函数表达式: ( 参数列表选择 ) 函数返回类型选择 => 函数体 函数体:       表达式 参数列表:       固定参数列表       固定参数列表 , 可选参数列表       可选参数列表 固定参数-列表:       参数       参数 , 固定参数列表 参数:       参数名称参数类型选择 参数名称:       标识符 参数类型:       断言 函数返回类型:       断言 断言: as nullable-primiitve-type 可选参数列表:       可选参数       可选参数 , 可选参数列表 可选参数: optional 参数 可空 nullable原始类型选择原始类型_
冬夜先生
2022/01/05
5480
操作员行为
当表达式包含多个运算符时,运算符的优先级控制计算各个运算符的顺序。例如,表达式x + y * z被评估为x + (y * z)因为*运算符的优先级高于二元+运算符。运算符的优先级由其相关文法产生式的定义确定。例如,加法表达式由一系列乘法表达式组成,由+or-运算符分隔,因此+and-运算符的优先级低于*and/运算符。
冬夜先生
2022/01/05
7770
相关推荐
【C++进阶篇】C++11新特性(上篇)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验