文章目录

第101章 属性关键字 - InitialExpression

指定此属性的初始值。

用法

要指定此属性的初始值,请使用以下语法:

Property name As classname [ InitialExpression = initialexpression ];

其中,initialexpression是用大括号括起来的常量或ObjectScript表达式。

详解

此关键字指定属性的初始值。该值是在创建新实例时由类的%New()方法分配的。(如果属性是瞬态的的,则其初始值由创建实例时%New()调用的代码或实例从磁盘加载到内存时%OpenId()调用的代码确定。)

初始表达式的值必须适合给定的属性类型。

表达式可以是任意复杂的,有以下限制:

  • 初始表达式不能引用其他属性。也就是说,诸如{..therPropertyname}这样的表达式无效。
  • 初始表达式不能实例化对象,也不能包括对象引用。
  • 初始表达式不能调用实例方法(只能调用类方法)。
  • 必须在ObjectScript中指定初始表达式。
  • 表达式执行的代码不应报告错误。InterSystems IRIS不提供处理表达式返回的错误的方法。
  • 如果表达式执行的代码导致发生其他处理,则InterSystems IRIS不提供处理该处理结果的方法。

子类继承InitialExpression关键字的值并可以重写它。

默认

InitialExpression关键字的默认值为NULL

示例

下面显示了几个使用ObjectScript表达式的示例:

Property DateTime As %Date [ 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()} ];