文章
姚 鑫 · 七月 21 阅读大约需 5 分钟

关键字参数定义,映射定义,属性定义,查询定义

第五章 参数定义

描述参数定义的结构。

介绍

参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。

详解

参数定义具有以下结构:

/// description 
Parameter name As parameter_type [ keyword_list ] = value ;
  • description描述(可选)旨在显示在“类参考”中。默认情况下,描述为空白。
  • name(必需)是参数的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。
  • parameter_type(可选)指定参数的用户界面类型,由Studio用于在检查器内为参数提供输入验证。

这不是类名;参见下一节。在大多数情况下,编译器会忽略这个关键字。

如果省略参数类型,也要省略单词As

  • value(可选)指定参数的值。如果省略值,也要省略等号=
  • keyword_list(可选)是以逗号分隔的关键字列表,用于进一步定义参数。

如果省略此列表,也要省略方括号。

参数的允许类型

参数类型parameter_type 选项可以是下列值之一:

  • BOOLEAN — true(1)或false(0)值。

  • CLASSNAME — 有效的类名。

  • COSCODE — ObjectScript代码。

  • COSEXPRESSION — 有效的ObjectScript表达式。

如果参数是COSEXPRESSION类型,则在运行时计算该表达式。

与形参Type关键字的大多数其他值不同,这个值影响编译器。

  • COSIDENTIFIER — 有效的ObjectScript标识符。

  • INTEGER — 整数值。

  • SQL — SQL语句

  • SQLIDENTIFIER — 有效的SQL标识符。

  • STRING —字符串值。

  • TEXT — 多行文本值。

  • CONFIGVALUE -可以在类定义之外修改的参数。
    与形参Type关键字的大多数其他值不同,这个值影响编译器。
    如果参数的类型是CONFIGVALUE,那么可以通过$SYSTEM.OBJ.UpdateConfigParam()修改参数。
    例如,下面的代码更改了参数MYPARM(在类MyApp中)的值。
    MyClass的新值为42:
set sc=$system.OBJ.UpdateConfigParam("MyApp.MyClass","MYPARM",42)

注意,$SYSTEM.OBJ.UpdateConfigParam()影响任何新进程所使用的生成的类描述符,但不影响类定义。
如果重新编译类,InterSystems IRIS将重新生成类描述符,该描述符现在将使用包含在类定义中的这个参数的值(从而覆盖通过$SYSTEM.OBJ.UpdateConfigParam()所做的更改)。

也可以省略parameter_type,在这种情况下Inspector将允许参数的任何值。

/// web服务的名称。
Parameter SERVICENAME = "SOAPDemo" ;

第六章 映射定义

描述投影定义的结构。

介绍

投影定义指示类编译器在编译或删除类定义时执行指定的操作。
投影定义投影类的名称(来自%Projection.AbstractProjection)实现方法称为类的编译完成后,当一个类定义中删除(因为它被删除或者因为类即将重新编译)。

详情

投影定义有以下结构:

/// description 
Projection name As projection_class (parameter_list) ;
  • description(可选)用于在类引用中显示(但请注意投影目前没有显示在类引用中)。
    说明默认为空。
  • Name(必需)是投影的名称。
    这必须是一个有效的类成员名,并且不能与任何其他类成员名冲突。
  • projection_class (required)是投影类的名称,它是%Projection.AbstractProjection的子类。
  • parameter_list(可选)是一个以逗号分隔的参数及其值列表。
    如果指定,这些应该是projection_class使用的参数。

如果省略了这个列表,也省略了括号。

  • Keyword_list(可选)是一个逗号分隔的关键字列表,这些关键字进一步定义了投影。

如果省略了这个列表,也可以省略方括号。

第七章 属性定义

描述属性定义的结构。注意,关系是一种属性。

介绍

属性包含与类实例相关的信息。可以向对象类添加属性定义。它们在其他类中没有意义。

详情

属性定义有以下结构:

/// description 
Property name As classname (parameter_list) [ keyword_list ] ;

或者(对于列表属性):

/// description 
Property name As List Of classname (parameter_list) [ keyword_list ] ;

或者(对于数组属性):

/// description 
Property name As Array Of classname (parameter_list) [ keyword_list ] ;

或者(对于关系属性):

/// description 
Relationship name As classname [ keyword_list ] ;
  • description(可选)用于在类引用中显示。说明默认为空。
  • name(必需)是属性的名称。
    这必须是一个有效的类成员名,并且不能与任何其他类成员名冲突。
  • classname(可选)是该属性所基于的类的名称。
  • parameter_list(可选)是参数及其值的逗号分隔列表。如果指定,这些应该是由类名使用的参数,或者是对所有属性都可用的参数。

如果省略此列表,也要省略括号。
- keyword_list(对于关系属性是必需的,但在其他方面是可选的)是一个逗号分隔的关键字列表,用于进一步定义属性。

如果省略此列表,也要省略方括号。

注意:分片类不支持属性关系。

Property SSN As %String(PATTERN = "3N1""-""2N1""-""4N") [ Required  ]; 

第八章 查询定义

描述查询定义的结构。

介绍

类查询是作为类结构一部分的命名查询,可以通过动态SQL进行访问。

可以在任何类中定义类查询;不需要将它们包含在持久类中。

详解

查询定义具有以下结构:

/// description 
Query name(formal_spec) As classname [ keyword_list ]  
{ implementation }
  • description描述(可选)旨在显示在“类别参考”中。默认情况下,描述为空白。
  • name(必需)是查询的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。
  • formal_spec(可选)指定传递给查询的参数列表。

具体来说,这是通过关联查询类的Execute()方法传递给查询的参数列表。

  • classname(必需)指定此查询使用的查询类。

对于基于SQL的查询,该值通常为%SQLQuery,对于自定义查询,该值通常为%Query。

注意:分片类不支持自定义类查询。

  • keyword_list(可选)是逗号分隔的关键字列表,用于进一步定义查询。

如果省略此列表,也要省略方括号。
- implementation 实现(可选)是定义查询的零行或多行代码。

00
1 0 0 8
Log in or sign up to continue