我发生了以下代码:
public static class FuncUtils
{
public static Func<T1, T3> Compose<T1, T2, T3> (Func<T1, T2> f1, Func<T2, T3> f2)
{
return a => f2(f1(a));
}
}
对我来说最大的谜是这个
return a => f2(f1(a));
你能解释一下它是如何工作的吗?
最佳答案
它将返回 Func<T1, T3>
, 这是一个函数(委托(delegate)),它接受一些类型为 T1
的参数并返回 T3
类型的结果 。让我们调用返回的 Func
f
f
的结果(返回值)只是 2 个函数参数 f1
的结果和 f2
在给定的任何参数上组合(如数学函数组合)。
更多关于 f
, 返回的 Func
:
申请f1
在参数 a
上(类型 T1
),得到一些结果 b
(类型 T2
),然后应用 f2
在 b
,将此结果称为 c
(类型 T3
)。 c
将是任何 a
的结果传递给 f
.
关于c# - 这个C#函数组合方法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725270/