第十八章 Cach 函式大全 GET 函式

2021-10-24 11:10:03 字數 3610 閱讀 5756

描述引數

示例注意

返回指定變數的資料值。

$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 條件特性類 定製特性 利用定製特性,可宣告式地為自己的 構造新增註解來...