第四十八章 Caché 函數大全 $PARAMETER 函數 第四十八章 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章