第101章 属性关键字 - InitialExpression
指定此属性的初始值。
用法
要指定此属性的初始值,请使用以下语法:
代码语言:javascript复制Property name As classname [ InitialExpression = initialexpression ];
其中,initialexpression
是用大括号括起来的常量或ObjectScript表达式。
详解
此关键字指定属性的初始值。该值是在创建新实例时由类的%New()
方法分配的。(如果属性是瞬态的的,则其初始值由创建实例时%New()
调用的代码或实例从磁盘加载到内存时%OpenId()
调用的代码确定。)
初始表达式的值必须适合给定的属性类型。
表达式可以是任意复杂的,有以下限制:
- 初始表达式不能引用其他属性。也就是说,诸如{
..therPropertyname
}这样的表达式无效。 - 初始表达式不能实例化对象,也不能包括对象引用。
- 初始表达式不能调用实例方法(只能调用类方法)。
- 必须在ObjectScript中指定初始表达式。
- 表达式执行的代码不应报告错误。InterSystems IRIS不提供处理表达式返回的错误的方法。
- 如果表达式执行的代码导致发生其他处理,则InterSystems IRIS不提供处理该处理结果的方法。
子类继承InitialExpression
关键字的值并可以重写它。
默认
InitialExpression
关键字的默认值为NULL
。
示例
下面显示了几个使用ObjectScript表达式的示例:
代码语言:javascript复制Property DateTime As �te [ InitialExpression = {$zdateh("1966-10-28",3)} ];
Property MyString As %String [ InitialExpression = {$char(0)} ];
/// 此参数使用参数值进行初始化
Property MyProp As %String [ InitialExpression = {..#MYPARM} ];
/// 这是由一个类方法初始化的
Property MyProp2 As %Numeric [ InitialExpression = {..Initialize()} ];
第102章 属性关键字 - Internal
指定此属性定义是否为内部定义(不显示在类文档中)。
用法
要指定此属性为内部属性,请使用以下语法:
代码语言:javascript复制Property propertyname As classname [ Internal ];
否则,请省略此关键字或将该词放在该关键字之前。
详解
类文档中不显示内部类成员。如果希望用户看到某个类,但不能看到其所有成员,则此关键字非常有用。
默认
如果省略此关键字,则此属性将显示在类文档中。
第103章 属性关键字 - Inverse
指定此关系的反面。关系属性需要。不用于其他属性。
用法
要在相关类中指定与该关系属性相反的关系属性,请使用以下语法:
代码语言:javascript复制Relationship Chapters As Chapter [ Cardinality = cardinality; Inverse = inverse ];
其中,Inverse
是相关类中属性的名称。
详解
此关键字指定关系的反向方的名称,即相关类中对应关系属性的名称。反向属性必须存在于相关类中,并且具有正确的基数值。
关系属性需要Inverse
关键字。非关系属性会忽略它。
默认
没有默认值。定义关系时,必须指定逆序关键字。
示例
代码语言:javascript复制Relationship Chapters As Chapter [ Cardinality = many; inverse = Book ];
第104章 属性关键字 - MultiDimensional
指定此属性具有多维数组的特征。
用法
要指定此属性具有多维数组的特征,请使用以下语法:
代码语言:javascript复制Property Data [ Multidimensional ];
否则,省略此关键字或将单词Not放在关键字的前面。
详解
多维属性不同于其他属性,如下所示:
- IRIS不为其提供属性方法。
- 当对象被验证或保存时,它被忽略。
- 它不会保存到磁盘,除非应用程序包含专门保存它的代码。也就是说,属性也是自动瞬态的。
- 它不能暴露给Java或其他客户端。
- 它不能存储在或通过SQL表公开。
多维属性很少见,但它提供了一种有用的方法来临时包含关于对象状态的信息。
默认
如果省略此关键字,则属性不是多维的。