第三十六章 Caché 函数大全 $LISTUPDATE 函数

文章目录

第三十六章 Caché 函数大全 $LISTUPDATE 函数

通过可选地替换指定的列表元素或元素序列来更新列表。

大纲

$LISTUPDATE(list,position,bool:val...)
$LU(list,position,bool:val...)

参数

  • list 任何计算结果为列表的表达式。可以使用$LISTBUILD$LISTFROMSTRING创建列表,或使用$LIST从另一个列表中提取列表。空字符串(“”)也被视为有效列表。
  • position 一个正整数,指定要在列表中更新的位置(从1开始)。如果position大于列表中元素的数量,则$LISTUPDATE会追加该元素,并在必要时进行填充。
  • bool 可选—一个布尔变量,指定是否更新指定的列表元素。如果省略,则bool默认为1,导致此元素被更新。
  • value 用于在指定位置更新列表的值。可以指定以逗号分隔的值参数列表或bool:value对参数的任意组合。

描述

$LISTUPDATE返回通过按位置替换或添加一个或多个列表元素而更新的列表的副本。该位置指定了列表中开始更新元素的位置。从此位置开始,元素将顺序更新。该位置可以大于列表中元素的数量。如果是这样,则将其他null元素添加到列表(如果需要),以在指定位置插入新元素。请注意,位置必须为正整数; $LISTUPDATE不能在列表的开头插入新元素。设置位置= 0不执行任何操作。 $LISTUPDATE也不能指定列表结尾,除非从列表开头开始按位置计数。

$ISTUPDATE可以指定一个或多个bool:value对。多个bool:value对用逗号分隔。这些bool:value对从position元素开始更新顺序元素。如果bool = 1,则Caché用值更新该元素。如果bool = 0,则Caché不会更新该元素,而是继续执行下一个元素。

不需要按bool:value对序列进行更新的顺序元素,不必指定;它们可以用占位符逗号表示。 bool:参数对于每个值都是可选的;如果省略,则默认为1。如果省略bool,也将省略冒号(:)分隔符。因此,以下是指定bool:value对的允许方式:

  • 要更新的元素:1:“newval”或“newval”(布尔默认为1)。
  • 不更新的元素:0:“newval”或占位符逗号。

$LISTUPDATE通常用于返回现有列表的更新版本。可以使用$LISTUPDATE通过指定list =“”来创建列表。

还可以使用SET $LIST更新现有列表中的一个或多个元素。

示例

下面的示例将位置2处的list元素替换为指定值:

/// d ##class(PHA.TEST.Function).LISTUPDATE()
ClassMethod LISTUPDATE()
{
	SET caps=1
	SET mylist = $LISTBUILD("Red","White","Blue")
	SET newlist = $LISTUPDATE(mylist,2,caps:"WHITE1")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE()
newlist=$lb("Red","WHITE1","Blue")

以下示例未使用指定的值替换位置2处的列表元素:

/// d ##class(PHA.TEST.Function).LISTUPDATE1()
ClassMethod LISTUPDATE1()
{
	SET caps=0
	SET mylist = $LISTBUILD("Red","White","Blue")
	SET newlist = $LISTUPDATE(mylist,2,caps:"WHITE1")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE1()
newlist=$lb("Red","White","Blue")

以下示例将位置2处的list元素替换为null:

/// d ##class(PHA.TEST.Function).LISTUPDATE2()
ClassMethod LISTUPDATE2()
{
	SET caps=1
	SET mylist = $LISTBUILD("Red","White","Blue")
	SET newlist = $LISTUPDATE(mylist,2,caps:"")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE2()
newlist=$lb("Red","","Blue")

下面的示例在列表7的位置附加指定的值,并在位置5和6处填充空元素:

/// d ##class(PHA.TEST.Function).LISTUPDATE3()
ClassMethod LISTUPDATE3()
{
	SET bool=1
	SET mylist = $LISTBUILD("Red","Orange","Yellow","Green")
	SET newlist = $LISTUPDATE(mylist,7,bool:"Purple")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE3()
newlist=$lb("Red","Orange","Yellow","Green",,,"Purple")

下面的示例不将列表添加到指定位置的位置7。返回未更改的列表,不填充任何空元素:

/// d ##class(PHA.TEST.Function).LISTUPDATE4()
ClassMethod LISTUPDATE4()
{
	SET bool=0
	SET mylist = $LISTBUILD("Red","Orange","Yellow","Green")
	SET newlist = $LISTUPDATE(mylist,7,bool:"Purple")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE4()
newlist=$lb("Red","Orange","Yellow","Green")
 

以下三个示例在功能上都是相同的。每个元素替换位置2和4的元素,并在位置7附加一个新元素。它不替换元素3和5。元素6被创建为空元素:

/// d ##class(PHA.TEST.Function).LISTUPDATE5()
ClassMethod LISTUPDATE5()
{
	SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
	SET newlist = $LISTUPDATE(mylist,2,1:"ORANGE",0:"YELLOW",
	                                  1:"GREEN",0:"BLUE",
	                                  0:"INDIGO",1:"VIOLET")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE5()
newlist=$lb("Red","ORANGE","Yellow","GREEN","Blue",,"VIOLET")
 

此处,仅在bool参数为0时指定它:

/// d ##class(PHA.TEST.Function).LISTUPDATE6()
ClassMethod LISTUPDATE6()
{
	SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
	SET newlist = $LISTUPDATE(mylist,2,"ORANGE",0:"YELLOW",
	                                  "GREEN",0:"BLUE",
	                                  0:"INDIGO","VIOLET")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE6()
newlist=$lb("Red","ORANGE","Yellow","GREEN","Blue",,"VIOLET")
 

在这里,占位符逗号用于跳过未更新的元素:

/// d ##class(PHA.TEST.Function).LISTUPDATE7()
ClassMethod LISTUPDATE7()
{
	SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
	SET newlist = $LISTUPDATE(mylist,2,"ORANGE",,"GREEN",,,"VIOLET")
	ZWRITE newlist
}
DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE7()
newlist=$lb("Red","ORANGE","Yellow","GREEN","Blue",,"VIOLET")
 

全为1时:

/// d ##class(PHA.TEST.Function).LISTUPDATE8()
ClassMethod LISTUPDATE8()
{
	SET mylist = $LISTBUILD("Red","Orange","Yellow","Green","Blue")
	SET newlist = $LISTUPDATE(mylist,2,"ORANGE1","YELLOW2",
	                                  "GREEN3","BLUE4",
	                                  "INDIGO5","VIOLET6")
	ZWRITE newlist
}

DHC-APP>d ##class(PHA.TEST.Function).LISTUPDATE8()
newlist=$lb("Red","ORANGE1","YELLOW2","GREEN3","BLUE4","INDIGO5","VIOLET6")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yaoxin521123

谢谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值