【发布时间】:2020-07-17 11:52:10
【问题描述】:
我正在尝试找到与 Julia 的 map!() 方法等效的 C# 方法,该方法的返回类型为 void,并接受一个函数、一个目标和一个函数所作用的集合。
我能找到的最好的东西是 C# 的 Enumerable.Select(),它将函数作为第三个参数,将集合作为第一个参数。但是,它返回一个新集合,而不是修改“目标”中的集合。这类似于 Julia 的 map() 更多。
【问题讨论】:
-
.Select()是一种LINQ扩展方法,它是一个查询,不按约定改变源。您必须分配结果或执行.ToList().ForEach(x => ....); -
@FalcoAlexander
ToList().ForEach是可憎的。如果您需要迭代查询,只需执行foreach(var x in query)而不是迭代查询以创建中间列表,然后迭代列表并将其丢弃。 -
你是对的,同意!!
-
最终,与其尝试重新创建 Julia 在 C# 中的工作方式,不如只学习如何编写 C# 工作方式的代码。在这种情况下,
destination = source.Select(func).ToList();似乎是您想要的。这实际上比map!()更好,因为您不需要预先创建集合或确保它足够大,我认为这两件事会导致各种错误。 -
拥有变异映射函数的原因是,出于性能原因,您可能希望重用已分配的内存。如果在热循环的每次迭代中分配一个新的输出数组可能会很浪费。非变异映射只是 Julia 中的
map。
标签: c# julia equivalent