返回指定列表中的元素数。
大纲$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