gpt4 book ai didi

c# - 嵌套的 lambda 语法

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

我在四处闲逛,发现以下代码无法编译:

Func<int> a = ((j) => (() => 3 * j))(1);

这对我来说似乎是一个有效的声明,下面的等效(?)声明在 python 中有效:

print (lambda x: lambda: 3 * x)(1)()

这只是运行时处理匿名函数方式的结果吗?

最佳答案

这在 C# 中可能但不是漂亮 - 它需要显式转换和大量括号:

Func<int> a = ((Func<int, Func<int>>)(j => () => 3 * j))(1);

或类似的

Func<int, Func<int>> x = j => () => 3 * j;
Func<int> a = x(1);

我认为这里的问题是 C# 通常无法推断出 lambda 的类型——它只能检查 lambda 是否与分配给它的转换、变量、参数等的类型相匹配。在您的版本中,外部 lambda (x) 没有指定类型。

关于c# - 嵌套的 lambda 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013807/

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