第二章 ObjectScript 语法的基本规则

发布时间 2023-11-20 16:23:10作者: riusky

大小写规则

ObjectScript 的某些部分区分大小写,而其他部分则不区分大小写。一般来说,ObjectScript 的用户可定义部分区分大小写,而关键字则不区分大小写:

  • 区分大小写:变量名(局部、全局和进程私有全局)和变量下标、类名、方法名、属性名、属性的实例变量的 i% 前言、例程名称、宏名称、宏包含文件(.inc 文件)名称、标签名称、锁名称、密码、嵌入式代码指令标记字符串、嵌入式 SQL 主变量名称。

  • 不区分大小写:命令名称、函数名称、特殊变量名称、命名空间名称(见下文)、用户名和角色名称、预处理器指令(例如#include)、字母代码(用于 LOCK、OPEN 或 USE)、关键字代码(对于 $STACK)、模式匹配代码和嵌入式代码指令(&html、&js、&sql)。

  • 通过自定义 %ZLANG 例程添加的自定义语言元素不区分大小写;创建它们时必须使用大写,引用它们时可以使用任何大小写。

  • 由于文本分析索引通过将文本转换为小写来规范文本,因此大多数 NLP 值(包括域名)都不区分大小写。

  • 通常不区分大小写:以下各项的大小写敏感性取决于平台:设备名称、文件名、目录名称、磁盘驱动器名称。指数符号通常不区分大小写。

  • 大写“E”始终是有效的指数符号;可以使用 %SYSTEM.Process 在新选项卡中打开的 ScientificNotation() 在新选项卡中打开方法将小写“e”配置为对当前进程有效或无效,或者使用 ScientificNotation 在新选项卡中打开在系统范围内将小写“e”配置为有效或无效Config.Miscellaneous 的属性在新选项卡类中打开。

标识符

用户定义的标识符(变量、例程和标签名称)区分大小写。 String、string 和 STRING 都引用不同的变量。全局变量名称也区分大小写,无论是用户定义的还是系统提供的。

  • SQL语句的标识符不需要区分大小写。

关键字

命令、函数和系统变量关键字(及其缩写)不区分大小写。您可以使用 Write、write、WRITE、W 或 w;都引用同一个命令。

类名

所有与类相关的标识符(类名、属性名、方法名等)都是区分大小写的。然而,出于唯一性的目的,此类名称被认为不区分大小写;也就是说,两个类名不能仅因大小写而不同。

命名空间

命名空间名称不区分大小写,这意味着您可以输入大写和小写字母的任意组合的命名空间名称。但请注意,InterSystems IRIS® 始终以大写形式存储命名空间名称。
因此,InterSystems IRIS 可能会以大写形式向您返回名称空间名称,而不是您指定的大小写。有关命名空间命名约定的更多详细信息,请参阅命名空间。

Unicode

InterSystems IRIS 支持 Unicode 国际字符集。 Unicode 字符是 16 位字符,也称为宽字符。 $ZVERSION 特殊变量 (Build nnnU) 和 $SYSTEM.Version.IsUnicode() 在新选项卡中打开方法表明 InterSystems IRIS 安装支持 Unicode。

对于大多数用途,InterSystems IRIS 仅支持 Unicode 基本多语言平面(十六进制 0000 到 FFFF),其中包含最常用的国际字符。

在内部,InterSystems IRIS 使用 UCS-2 编码,对于基本多语言平面,该编码与 UTF-16 相同。您可以使用 $WCHAR 、 $WISWIDE 和相关函数来处理不在 Unicode 基本多语言平面中的字符。

InterSystems IRIS 通过为每个字符分配 16 位(两个字节)将 Unicode 字符串编码到内存中,这是 UTF-16 编码的标准。

但是,将 Unicode 字符串保存到全局时,如果所有字符的数值均为 255 或更低,InterSystems IRIS 将使用每个字符 8 位(一个字节)存储该字符串。

如果字符串包含数值大于 255 的字符,InterSystems IRIS 将应用压缩算法来减少字符串在存储中占用的空间量。 这个特性在处理数据时是有危险的

Unicode和UTF-8之间的转换,以及到其他字符编码的转换,请参考 $ZCONVERT 函数。您可以使用 ZZDUMP 显示字符串的十六进制编码。您可以使用 $CHAR 通过十进制(基数 10)编码来指定字符(或字符串)。您可以使用 $ZHEX 将十六进制数转换为十进制数,或将十进制数转换为十六进制数。