第三十二章 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