第四十八章 Caché 函数大全 $PARAMETER 函数

    科技2025-04-13  16

    文章目录

    第四十八章 Caché 函数大全 $PARAMETER 函数 大纲参数 描述无效值 示例

    第四十八章 Caché 函数大全 $PARAMETER 函数

    返回指定的类参数的值。

    大纲

    $PARAMETER(class,parameter)

    参数

    class 可选-类名或对类实例的对象引用(OREF)。如果省略,则使用当前类实例的对象引用。如果省略,则必须指定占位符逗号。parameter 参数的名称。计算结果为字符串的表达式。字符串的值必须与由class标识的类的现有参数的名称匹配。

    描述

    $PARAMETER返回指定的类参数的值。 $PARAMETER可以在当前类上下文或指定的类上下文中查找此参数。可以将类名指定为带引号的字符串,指定OREF或忽略类参数,并默认使用当前实例(请参见$THIS)。指定类是可选的;必须指定逗号分隔符。

    DHC-APP> WRITE $PARAMETER("%Library.Boolean","XSDTYPE") boolean

    有多种使用对象语法返回参数值的方法,如以下示例所示:

    /// d ##class(PHA.TEST.Function).PARAMETER() ClassMethod PARAMETER() { ZNSPACE "Samples" WRITE "ObjectScript function:",! WRITE $PARAMETER("Sample.Person","EXTENTQUERYSPEC") WRITE !,"class parameter:",! WRITE ##class(Sample.Person).#EXTENTQUERYSPEC WRITE !,"instance parameter:",! SET myinst=##class(Sample.Person).%New() WRITE myinst.%GetParameter("EXTENTQUERYSPEC") WRITE !,"instance parameter:",! WRITE myinst.#EXTENTQUERYSPEC } DHC-APP>d ##class(PHA.TEST.Function).PARAMETER() ObjectScript function: Name,SSN,Home.City,Home.State class parameter: Name,SSN,Home.City,Home.State instance parameter: Name,SSN,Home.City,Home.State instance parameter: Name,SSN,Home.City,Home.State

    无效值

    $PARAMETER("","XMLTYPE"):尝试调用无效的OREF(例如空字符串,整数或小数)将导致<INVALID OREF>错误。$PARAMETER("bogus","XMLTYPE"):尝试调用不存在的类会导致<CLASS DOES NOT EXIST>错误,后跟指定的类名。如果未指定软件包名称,则Caché将采用默认名称。例如,尝试调用不存在的类“bogus”将导致 <CLASS DOES NOT EXIST>错误 * User.bogus。$PARAMETER(,"XMLTYPE"):尝试在未建立任何对象实例时默认使用默认对象导致 <NO CURRENT OBJECT>错误。$PARAMETER("%SYSTEM.Task",""):尝试引用无效的参数名称(例如,空字符串)或通过数字引用参数会生成<ILLEGAL VALUE>错误。$PARAMETER("%SYSTEM.Task","MakeCoffee"):尝试引用不存在的参数名称将返回空字符串(“”)。

    示例

    以下示例指定类名,并返回XMLTYPE和XSDTYPE参数的类默认值:

    SAMPLES>WRITE $PARAMETER("%SYSTEM.Task","XMLTYPE") SYSTEMTask SAMPLES>WRITE $PARAMETER("%Date","XSDTYPE") date

    下面的示例指定一个OREF并为此实例返回XMLTYPE参数的值:

    SAMPLES>SET oref=##class(%SYSTEM.Task).%New() SAMPLES>WRITE $PARAMETER(oref,"XMLTYPE") SYSTEMTask

    以下示例使用$PARAMETER语法和类语法返回系统参数:

    SAMPLES>WRITE $PARAMETER("%SYSTEM.SQL","%RandomSig") N74U7m1MbDMBIA SAMPLES>WRITE ##class(%SYSTEM.SQL).#%RandomSig N74U7m1MbDMBIA
    Processed: 0.009, SQL: 8