描述引數
示例注意
返回指定變數的資料值。
$get(variable,default)
$g(variable,default)
$get
返回指定變數的資料值。未定義變數的處理取決於是否指定預設引數。
asc要返回其資料值的變數。
該變數不需要是定義的變數。$get
返回未定義變數的空字串;它不定義該變數。可以定義變數並將其設定為空字串(「」
)。如果是全域性變數,則它可以包含擴充套件的全域性引用。如果是帶下標的全域性變數,則可以使用裸全域性引用指定它。即使在引用未定義的下標全域性變數時,變數也會重置裸指示符,從而影響將來的裸全域性引用,如下所述。
$get
無法返回**物件屬性的屬性值。相反,caché會發出一條訊息,指出指定的屬性不存在。此屬性訪問限制對於類%zen.proxyobject
是唯一的,該類在intersystems類參考中定義。
未定義變數時要返回的資料值。它可以是任何表示式,包括區域性變數或全域性變數,帶下標或不帶下標。如果是全域性變數,則它可以包含擴充套件的全域性引用。如果是帶下標的全域性變數,則可以使用裸全域性引用指定它。如果存在,default將重置裸指示器,從而影響將來的裸全域性引用,如下所述。
如果default是乙個未定義的變數,則預設情況下,$get
會發出錯誤,即使定義了變數也是如此。通過設定
%system.process.unfined()
方法,可以更改caché行為,使其在引用未定義變數時不會生成錯誤。如果
unfined()
方法設定為不生成錯誤,則當預設值為unfined時,
$get
將返回變數。
在下面的示例中,定義了變數test
,而未定義變數xtest
。(使用zwrite
命令是因為它顯式返回null
字串值。)
/// d ##class(pha.test.function).get()
classmethod get()
(pha.test.function)
.get()
tdef=
"banana"
tundef=""
none
在以下示例中,將多維屬性用作變數值。本示例返回所有定義的命名空間的名稱:
/// d ##class(pha.test.function).get1()
classmethod get1()
} write !
,"done!"
}
(pha.test.function)
.get1()
none
namespace:
%sys
namespace: dhc-chssweb
namespace: dhc-csm
namespace: dhc-data
namespace: dhc-dwr
namespace: dhc-ekg
namespace: dhc-heis
namespace: dhc-hr
namespace: dhc-lisdata
namespace: dhc-lissrc
namespace: dhc-medsrc
namespace: dhc-mrq
namespace: docbook
namespace: fdbms
namespace: pacs
namespace: pis
namespace: ris
namespace: samples
namespace: user
done!
類似的程式使用$data
函式返回相同的資訊。
$get
為未定義變數($data = 0
)和為無資料的向下指標的陣列節點($data = 10
)提供了$data
測試的替代方法。如果變數是未定義的或沒有資料的指標陣列節點,則$get
返回空字串(「」
),而不會出現未定義的錯誤。例如,可以重新編碼以下行:
if $data(^
client
(i))=10
或
if $get(^
client
(i))=""
請注意,$data
測試比$get
測試更具體,因為它們使能夠區分未定義元素和僅是向下指標的元素。例如,這些行:
if $data(^
client
(i))=0
elseif $data(^
client
(i))=10
無法重新編碼為:
if $get(^
client
(i))=""
elseif $get(^
client
(i))=""
這兩行根據陣列元素是未定義的還是沒有資料的向下指標執行不同的操作。如果在這裡使用$get
,則只會執行第乙個動作(quit
)。可以將$data
用於第乙個測試,將$get
用於第二個測試,但不能反向使用($get
用於第乙個測試,$data
用於第二個測試)。
$get(variable,default)
允許在未定義指定變數時返回預設值。可以使用$select
函式執行相同的操作。
但是,與$select
不同,$get
中的第二個引數始終被求值。
如果變數和預設值都使用下標的全域性引用並因此都修改了裸指標,則$get
始終會評估其兩個引數這一事實很重要。因為引數是按從左到右的順序求值的,所以無論$get
是否返回預設值,裸指標都設定為預設的全域性引用。
如果指定的變數未定義,$get
定義處理行為。如果未定義指定的變數,則$get
的基本形式將返回乙個空字串(「」
)。
$data
測試是否定義了指定的變數。如果變數未定義,則返回0。
可以使用%system.process
類的undefined()
方法為每個程序定義所有未定義變數的處理行為。可以通過設定config.miscellaneous
類的undefined
屬性來建立系統範圍的預設行為。設定未定義對指定變數的$get
或$data
處理沒有影響。
第十八章 Cach 變數大全 THIS 變數
包含當前類上下文。this this包含當前的類上下文。例項方法的類上下文是當前物件引用 oref 類方法的類上下文是作為字串值的當前類名。例如,如果從類方法中發出命令do method 或set property value,則使用 this的當前值來解析.上下文。在物件例項內進行引用時,首選相對...
第十八章 B樹
施工中施工中 基本操作主要包括 搜尋b樹,建立空b樹,插入關鍵字。18.3放出刪除關鍵字的 class program region 磁碟操作 為結點初始化對應的磁碟頁 private static node t allocate node t 磁碟寫操作 private static void d...
第十八章 定製特性
目錄 18.1 使用定製特性 18.2 定義自己的特性類 18.3 特性構造器和字段 屬性資料型別 18.4 檢測定製特性 18.5 兩個特性例項的相互匹配 18.6 檢測定製特性時不建立從attribute派生的物件 18.7 條件特性類 定製特性 利用定製特性,可宣告式地為自己的 構造新增註解來...