#
第五章 参数定义 描述参数定义的结构。 # 介绍 参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。 # 详解 参数定义具有以下结构: ```java /// 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`: ```java 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`)实现方法称为类的编译完成后,当一个类定义中删除(因为它被删除或者因为类即将重新编译)。 # 详情 投影定义有以下结构: ```java /// description Projection name As projection_class (parameter_list) ; ``` - `description`(可选)用于在类引用中显示(但请注意投影目前没有显示在类引用中)。 说明默认为空。 - `Name`(必需)是投影的名称。 这必须是一个有效的类成员名,并且不能与任何其他类成员名冲突。 - `projection_class` (required)是投影类的名称,它是`%Projection.AbstractProjection`的子类。 - `parameter_list`(可选)是一个以逗号分隔的参数及其值列表。 如果指定,这些应该是`projection_class`使用的参数。 如果省略了这个列表,也省略了括号。 - `Keyword_list`(可选)是一个逗号分隔的关键字列表,这些关键字进一步定义了投影。 如果省略了这个列表,也可以省略方括号。 #
第七章 属性定义 描述属性定义的结构。注意,关系是一种属性。 # 介绍 属性包含与类实例相关的信息。可以向对象类添加属性定义。它们在其他类中没有意义。 # 详情 属性定义有以下结构: ```java /// description Property name As classname (parameter_list) [ keyword_list ] ; ``` 或者(对于列表属性): ```java /// description Property name As List Of classname (parameter_list) [ keyword_list ] ; ``` 或者(对于数组属性): ```java /// description Property name As Array Of classname (parameter_list) [ keyword_list ] ; ``` 或者(对于关系属性): ```java /// description Relationship name As classname [ keyword_list ] ; ``` - `description`(可选)用于在类引用中显示。说明默认为空。 - `name`(必需)是属性的名称。 这必须是一个有效的类成员名,并且不能与任何其他类成员名冲突。 - `classname`(可选)是该属性所基于的类的名称。 - `parameter_list`(可选)是参数及其值的逗号分隔列表。如果指定,这些应该是由类名使用的参数,或者是对所有属性都可用的参数。 如果省略此列表,也要省略括号。 - `keyword_list`(对于关系属性是必需的,但在其他方面是可选的)是一个逗号分隔的关键字列表,用于进一步定义属性。 如果省略此列表,也要省略方括号。 注意:分片类不支持属性关系。 ```java Property SSN As %String(PATTERN = "3N1""-""2N1""-""4N") [ Required ]; ``` #
第八章 查询定义 描述查询定义的结构。 # 介绍 类查询是作为类结构一部分的命名查询,可以通过动态SQL进行访问。 **可以在任何类中定义类查询;不需要将它们包含在持久类中。** # 详解 查询定义具有以下结构: ```java /// description Query name(formal_spec) As classname [ keyword_list ] { implementation } ``` - `description`描述(可选)旨在显示在“类别参考”中。默认情况下,描述为空白。 - `name`(必需)是查询的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。 - `formal_spec`(可选)指定传递给查询的参数列表。 具体来说,这是通过关联查询类的`Execute()`方法传递给查询的参数列表。 - `classname`(必需)指定此查询使用的查询类。 **对于基于SQL的查询,该值通常为`%SQLQuery`,对于自定义查询,该值通常为%Query。** **注意:分片类不支持自定义类查询。** - `keyword_list`(可选)是逗号分隔的关键字列表,用于进一步定义查询。 如果省略此列表,也要省略方括号。 - `implementation` 实现(可选)是定义查询的零行或多行代码。