关键字参数定义,映射定义,属性定义,查询定义
第五章 参数定义
描述参数定义的结构。
介绍
参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。
详解
参数定义具有以下结构:
/// 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
实现(可选)是定义查询的零行或多行代码。