第三十二章 Caché 函數大全 $LISTLENGTH 函數 第三十二章 Caché 函數大全 $LISTLENGTH 函數 大綱 描述 示例

第三十二章 Caché 函數大全 $LISTLENGTH 函數

返回指定列表中的元素數。

大綱

$LISTLENGTH(list)
$LL(list)

參數

= list 任何計算結果爲列表的表達式。可以使用$LISTBUILD$LISTFROMSTRING創建列表,或使用$LIST從另一個列表中提取列表。

描述

$LISTLENGTH返回列表中元素的數量。 $LISTLENGTH會將每個指定的列表位置計爲列表元素,無論該位置是否包含數據。

可以使用$LISTVALID函數來確定列表是否爲有效列表。如果列表不是有效列表,則系統生成<LIST>錯誤。

$LISTBUILD創建的“空”列表定義了一個編碼列表元素,儘管該列表元素不包含任何數據。因爲$LISTLENGTH對列表元素(不包含數據的元素)進行計數,所以“空”列表的$LISTLENGTH計數爲1。

空字符串(“”)用於表示一個空列表,該列表不包含任何元素。因爲它不包含任何列表元素,所以它的$LISTLENGTH計數爲0。

示例

下面的示例返回3,因爲列表中有3個元素:

DHC-APP>WRITE $LISTLENGTH($LISTBUILD("Red","Blue","Green"))
3

即使列表中的第二個元素不包含任何數據,以下示例也將返回3:

DHC-APP>WRITE $LISTLENGTH($LISTBUILD("Red",,"Green"))
3

以下示例均返回1。$LISTLENGTH在空列表元素和包含數據的列表元素之間沒有區別:

/// d ##class(PHA.TEST.Function).LISTLENGTH()
ClassMethod LISTLENGTH()
{
  WRITE $LISTLENGTH($LB()),!
  WRITE $LISTLENGTH($LB(UndefinedVar)),!
  WRITE $LISTLENGTH($LB("")),!
  WRITE $LISTLENGTH($LB($CHAR(0))),!
  WRITE $LISTLENGTH($LB("John Smith"))
}

下面的示例返回0。$LISTVALID將空字符串視爲有效列表,但不包含任何列表元素:

DHC-APP>WRITE $LISTLENGTH("")
0

下面的示例返回3,因爲兩個佔位符逗號表示3個空列表元素:

DHC-APP> WRITE $LISTLENGTH($LB(,,))
3

$LISTLENGTH和串聯

串聯兩個列表總會導致$LISTLENGTH等於列表長度的總和。即使連接空列表或將空字符串連接到列表,也是如此。

以下示例均返回列表長度3:

/// d ##class(PHA.TEST.Function).LISTLENGTH1()
ClassMethod LISTLENGTH1()
{
    WRITE $LISTLENGTH($LB()_$LB("a","b")),!
    WRITE $LISTLENGTH($LB("a")_$LB(UndefinedVar)_$LB("c")),!
    WRITE $LISTLENGTH($LB("")_$LB()_$LB(UndefinedVar)),!
    WRITE $LISTLENGTH(""_$LB("a","b","c")),!
    WRITE $LISTLENGTH($LB("a","b")_""_$LB("c"))
}
DHC-APP>d ##class(PHA.TEST.Function).LISTLENGTH1()
3
3
3
3
3

$LISTLENGTH和嵌套列表

以下示例返回3,因爲$LISTLENGTH無法識別嵌套列表中的單個元素,並將其視爲單個列表元素:

DHC-APP>WRITE $LISTLENGTH($LB("Apple","Pear",$LB("Walnut","Pecan")))
3

以下示例均返回1,因爲$LISTLENGTH僅計算最外面的嵌套列表:

/// d ##class(PHA.TEST.Function).LISTLENGTH2()
ClassMethod LISTLENGTH2()
{
    WRITE $LISTLENGTH($LB($LB($LB()))),!
    WRITE $LISTLENGTH($LB($LB($LB("Fred")))),!
    WRITE $LISTLENGTH($LB($LB("Barney"_$LB("Fred")))),!
    WRITE $LISTLENGTH($LB("Fred"_$LB("Barney"_$LB("Wilma"))))
}
DHC-APP>d ##class(PHA.TEST.Function).LISTLENGTH2()
1
1
1
1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章