属性关键字InitialExpression,Internal,Inverse,MultiDimensional

2022-07-07 11:31:27 浏览数 (1)

第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表公开。

多维属性很少见,但它提供了一种有用的方法来临时包含关于对象状态的信息。

默认

如果省略此关键字,则属性不是多维的。

0 人点赞