【发布时间】:2019-10-11 23:36:23
【问题描述】:
我写了一个函数,它接受 (Func & int N) 并重复 Func N 次并返回结果。
public IEnumerable<T> MyFunction(Func<T, T> function, int iteration)
{
}
有没有办法使用 Enumerable.Repeat 重复一个函数?
public IEnumerable<T> MyFunction(Func<T, T> function, int iteration)
{
yield return Enumerable.Repeat<T>(function.Invoke(), iteration);
}
我尝试运行上面的代码,但函数运行了一次。
【问题讨论】:
-
一句话,没有。
Repeat并不是要重复函数调用;它旨在重复一个值。只需像任何理智的程序员一样使用循环;)。 -
我们也可以重复
Action。Action是一个值吗? @HereticMonkey -
那不是执行动作;定义了 10 个准备被调用的动作(一个是,稍后,在你的
ForEach)(你也不应该需要ToList) -
Edit 您的问题以一种现实的方式使用它。现在看起来不太实用。循环会用更少的代码做同样的事情,这对以后的读者更有意义。..
-
你可以使用
Repeat构造一些奇怪的东西来重复一个函数,所以从技术上来说答案是肯定的。Repeat重复任何内容。但这会奇怪地令人费解。下一个开发人员会感到困惑,可能会使用循环重写它,然后担心会发生更复杂的事情而他们只是错过了它。然后,当他们意识到他们没有错过任何东西时,他们会有一种下沉的感觉,然后想,“哦,不,我还能在这里找到什么?”
标签: c# func enumerable