文章
· 八月 3, 2021 阅读大约需 3 分钟

索引关键字Unique,Abstract,ClientName,CodeMode

第五十七章 索引关键字 - Unique

指定索引是否应强制唯一性。

用法

要指定IRIS应强制此索引所基于的属性具有唯一性,请使用以下语法:

Index name On property_expression_list [ Unique ];

否则,请省略此关键字或将该词放在该关键字之前。

详情

如果存在UNIQUE关键字,则表示这是唯一索引。

由唯一索引索引的属性(或多个属性)被约束为在定义索引的类(表)的范围(所有对象的集合)内具有唯一值(即,没有两个实例可以具有相同的排序值)。

唯一索引不能也是位图索引。

示例

Index SSNIdx On SSN [ Unique ] ;

默认

如果省略此关键字,IRIS不会强制此索引所基于的属性具有唯一性。

第五十八章 方法关键字 - Abstract

指定这是否是抽象方法。

用法

要指定此方法是抽象的,请使用以下语法:

Method name(formal_spec) As returnclass [ Abstract ] {    //implementation }

否则,省略此关键字或将单词Not放在关键字的前面。

详解

抽象方法没有实现,也没有为其生成的可执行代码。抽象方法的存在仅仅是为了定义一个可以在一个或多个子类中被覆盖和实现的方法签名(或接口)。抽象方法的一些例子是在 IRIS类库中定义的但没有实现的各种回调方法。

默认

如果省略此关键字,则该方法不是抽象的。
[toc]

第五十九章 方法关键字 - ClientName

重写客户端投影中方法的默认名称。

用法

若要在将类投影到客户端语言时重写此方法的默认名称,请使用以下语法:

Method name(formal_spec) As returnclass [ ClientName = clientname ] 
{    //implementation }

其中clientname是在客户端语言中使用的名称。

详解

当方法被投影到客户端语言时,此关键字允许定义方法的替代名称。如果方法名包含客户端语言中不允许的字符,这尤其有用。

默认

如果省略此关键字,方法名称将用作客户端名称。
[toc]

第六十章 方法关键字 - CodeMode

指定如何实现此方法。

用法

要指定如何实现该方法,请使用以下语法:

Method name(formal_spec) As returnclass [ CodeMode=codemode ]  
{    //implementation }

其中codemode是下列之一:

  • call — 这个方法是例程调用的别名(用于包装遗留代码)。

  • code (默认) — 这个方法是以代码行的形式实现的。

  • expression — 此方法作为表达式实现。

  • objectgenerator — 这个方法是一个方法生成器。

注意:这个关键字(生成器generator)有一个旧的值,表示应该使用旧的、非基于对象的方法生成器。这只是为了与旧版本兼容。较新的应用程序应该使用objectgenerator

详解

此关键字指定如何实现给定的方法。

通常,方法使用一行或多行代码来实现。这由代码的默认代码模式值表示。在这种情况下,方法实现是一行或多行代码。

某些简单的方法可以实现为表达式方法;在某些情况下,类编译器可能会用包含表达式的内联代码替换对此方法的调用。在这种情况下,方法实现是一个简单的表达式(没有QuitReturn语句)。

调用方法是例程的包装。在这种情况下,方法实现是例程名和标记名。

方法生成器是在编译类时由类编译器调用的程序,它为给定的方法生成实际的实现。在这种情况下,方法实现是方法生成器的代码。

默认

CodeMode关键字的默认值是code

示例

/// 表达方式
Method Double(val As %Integer) As %Integer [ CodeMode = expression ] 
{
  val * 2
}

/// 方法生成器
Method GetClassName() As %String [ CodeMode = objectgenerator ] 
{
   Do %code.WriteLine(" Quit """ _ %class.Name _ """")
   Quit $$$OK
}
讨论 (0)1
登录或注册以继续