gpt4 book ai didi

delphi - 根据特定条件将内容从 list1 复制到 list2

转载 作者:行者123 更新时间:2023-12-03 15:53:03 25 4
gpt4 key购买 nike

如果我有两个这样定义的泛型列表:

type
pMyList = record
a, b: integer;
c: string;
end;
TMyList = TList<pMyList>;

var
list1, list2: TMyList;

只有当某些字段符合条件时,才有一些函数将内容从列表(es:list1)复制到其他列表(es:list2)吗?例如,我想从 list1 复制 list2 中的所有记录,其中 a 的值相同,例如 1。结果是,在 list2 中,我拥有 list1 中 a = 1 的所有记录,排除 a 值不同于 1 的所有其他记录。真诚地,我已经解决了问题:

for iIndex := 0 to Pred(list1.Count) do
if list1[iIndex].a = myvalue then list2.Add(list1[iIndex]);

但想知道是否有更具体的方法来执行此操作,例如使用 delphi 的某些函数。再次非常感谢。

最佳答案

不幸的是,因为 Delphi 缺乏使用 Collections 的 lambda 表达式,或者 Spring 框架中的通用列表可能会使源代码更长一些。另外,有些人不喜欢使用匿名方法,因为它们的语法非常麻烦。但这是一个品味问题。

使用集合,您的示例将如下所示:

list2.AddAll(list1.Where(
function(value: pMyList): Boolean
begin
Result := value.a = myvalue;
end));

请记住,提到的两个通用列表实现都是实现接口(interface),并且大多数方法都使用它们进行操作。在上面的示例中,这并不重要,因为您没有直接传递 list1。否则之后就会被释放。

通过这个例子,使用它们的好处可能并不明显,但是当您执行大量操作、过滤数据、将它们放入其他列表等等时,它会变得更容易,并且您不必编写大量额外的方法来进行这些操作。但正如我所说,这是一个品味问题,许多 Delphi 开发人员似乎不喜欢这种语法和编写代码的方式。

关于delphi - 根据特定条件将内容从 list1 复制到 list2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com