文章目录
- 第九章 ObjectScript 一般系统限制 - 类与例程限制
- 类与例程限制
第九章 ObjectScript 一般系统限制 - 类与例程限制
类与例程限制
以下限制适用于类与例程:
类方法引用
限制:每个例程或类有 32768
个唯一引用。
以下算作两个类方法引用,因为即使方法名称相同,类名称也不同。
java
Do ##class(c1).abc(), ##class(c2).abc()
类名引用
限制:每个例程或类有 32768
个唯一引用。
例如,以下内容被计为两个类名引用:
java
Do ##class(c1).abc(), ##class(c2).abc()
同样,以下内容也被计为两个类引用,因为 %File
到 %Library.File
的规范化是在运行时完成的,而不是在编译时完成的。
java
Do ##class(%File).Open(x)
Do ##class(%Library.File).Open(y)
实例方法引用
限制:每个例程或类 32768
。
如果 X
和 Y
是 OREF
,则以下内容算作一个实例方法引用:
java
Do X.abc(), Y.abc()
对多维属性的引用被计为实例方法,因为编译器无法区分它们。例如,考虑以下语句:
java
Set var = OREF.xyz(3)
由于编译器无法判断该语句是引用方法 xyz()
还是多维属性 xyz
,因此它将其视为实例方法引用。
行
限制:每个例程 65535
行,包括注释行。该限制适用于 INT
表示形式的大小。
literals (ASCII)
限制:每个例程或类 65535
个 ASCII
文字。
ASCII
文字是由三个或更多字符组成的带引号的字符串,其中没有字符大于 $CHAR(255)
。
请注意,ASCII
文字和 Unicode
文字是分开处理的,并且具有单独的限制。
literals(Unicode)
限制:每个例程或类 65535
个 Unicode
文字。
Unicode
文字是一个带引号的字符串,其中至少有一个字符比 $CHAR(255)
大。
请注意,ASCII
文字和 Unicode
文字是分开处理的,并且具有单独的限制。
参数
限制:每个子例程、方法或存储过程 255
个参数。
程序procedures
限制:每个例程 32767
。
属性Get
引用
限制:每个例程或类32768
。
此限制是指读取属性的值,如下例所示:
java
Set X = OREF.prop
属性Set
引用
限制:每个例程或类32768
。
此限制是指设置属性的值,如下例所示:
java
Set OREF.prop = value
例程引用
限制:每个例程或类 65535
。
此限制适用于例程或类中唯一引用 (^routine
) 的数量。
target references
限制:每个例程或类 65535
。
目标target
是标签^
例程(标签和例程的组合)。
任何target
引用也算作例程引用。例如,以下内容被计为两个例程引用和三个target
引用:
java
Do Label1^Rtn, Label2^Rtn, Label1^Rtn2
TRY
块
限制:每个例程 65535
。
私有变量
限制 (ObjectScript
):每个过程 32763
。
限制 (ObjectScript
):每个例程或类 65503
。