gpt4 book ai didi

c# - 在功能列表操作中,我们怎么称呼 "inserting something between each item"?

转载 作者:太空狗 更新时间:2023-10-29 22:08:53 25 4
gpt4 key购买 nike

偶尔我发现我需要通过在除最后一项之外的每个项目之后插入一个新项目来处理列表。类似于在字符串列表的每个项目之间放置逗号的方式。

我受够了每次都为最后一个(或第一个)项目编写特殊情况,所以我在 Linq 风格的扩展中捕获了该模式:

public static IEnumerable<T> Separate<T>(this IEnumerable<T> source, 
Func<T> separator)
{
bool first = true;
foreach (T item in source)
{
if (first)
first = false;
else
yield return separator();

yield return item;
}
}

例如,这使我可以轻松地以编程方式用超链接填充流文档,但每个超链接之间有一个换行符:

para.Inlines.AddRange(_recentFiles.Select(f => f.ToHyperlink())
.Separate(() => new LineBreak()));

假设这在 System.Linq.Enumerable 中还不存在(这是我通常在写完类似的东西后立即发现的),问题是,列表上的这个 Separate 操作通常是什么在其他功能框架或语言中调用?

最佳答案

haskell :intersperse

Zip 通常表示不同的操作 (zip [a, b, c] [x, y, z] = [(a, x), (b, y), ( c, z)])

关于c# - 在功能列表操作中,我们怎么称呼 "inserting something between each item"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158573/

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