gpt4 book ai didi

c# - 如何通过将所有元素加或在一起来简化列表?

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:47 24 4
gpt4 key购买 nike

如果我没记错的话,Linq的.Aggregate就像其他语言中的reduce()一样,不是吗?

无论如何,我正在尝试:

var tags = new[] { "a", "b", "c", ... };
tag.Rule = tags.Aggregate((x, y) => ToTerm(x) | y);


但这不会编译,因为我的lambda的返回类型必须是字符串。那么我怎样才能使它工作呢?

我知道它看起来很有趣,因为它的类型(这将成为反讽语法),但是您真正需要知道的是 ToTerm()返回一个 KeyTerm,并且 KeyTerms可以或可以一起构成一个 BnfExpression,这是tag.Rule所期望的。

最佳答案

您正在调用Aggregate<TSource>(IEnumerable<TSource>, Func<TSource, TSource, TSource>)重载,该重载将序列中的第一个值用作初始累加器值。

如果希望累加器的类型与序列中的元素不同,则需要自己指定初始累加器值:

tag.Rule = tags.Aggregate(BnfExpression.Empty, (x, y) => ToTerm(x) | y);

关于c# - 如何通过将所有元素加或在一起来简化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987878/

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