C# 多链lambda表达式?

C# 多链lambda表达式?,c#,lambda,currying,C#,Lambda,Currying,我偶然发现: 给定一个字符串s和一个表示s中的索引的整数n,输出s时删除第n个位置的字符 该职位投票率最高的是C s=>n=>s.Remove(n,1); 这个multiple=>语法是什么?它看起来类似于lambda表达式s,n=>s.Removen,1,但我不知道如何使用此代码。当它展开一点时,它非常简单 s => n => s.Remove(n, 1); 让我们调用函数fn:使用变量s调用fn将返回另一个函数,该函数使用变量n 您可以

我偶然发现:

给定一个字符串s和一个表示s中的索引的整数n,输出s时删除第n个位置的字符

该职位投票率最高的是C

s=>n=>s.Remove(n,1);

这个multiple=>语法是什么?它看起来类似于lambda表达式s,n=>s.Removen,1,但我不知道如何使用此代码。

当它展开一点时,它非常简单

s =>
     n =>
         s.Remove(n, 1);
让我们调用函数fn:使用变量s调用fn将返回另一个函数,该函数使用变量n

您可以看到,在打电话给fnhello后,我们实际上收到了以下信息:

n => "hello".Remove(n, 1);

因此,当我们调用返回的函数时,我们通过给它一个n来执行它。

当它展开一点时,它非常简单

s =>
     n =>
         s.Remove(n, 1);
让我们调用函数fn:使用变量s调用fn将返回另一个函数,该函数使用变量n

您可以看到,在打电话给fnhello后,我们实际上收到了以下信息:

n => "hello".Remove(n, 1);

因此,当我们调用返回的函数时,我们通过给它一个n来执行它。

如果没有类型定义,对我来说似乎不是一个有效的答案:

Func<string, Func<int, string>> f = s => n => s.Remove(n, 1);

string result = f("123")(1);   // "13"

如果没有类型定义,对我来说似乎不是一个有效的答案:

Func<string, Func<int, string>> f = s => n => s.Remove(n, 1);

string result = f("123")(1);   // "13"

Lambda表达式不能分配给var。在更标准的s上保存2个字节,n=>s.Removen,1;对,你是@apk,我已经更新了我的答案。最近JavaScript太多:P@itsme86这个解释帮助我理解了它。谢谢在数学和计算机科学中,curry是一种将对函数的求值转换为对函数序列求值的技术,该函数包含多个参数或一组参数,每个函数都有一个参数。这里不是这样的。Lambda表达式不能分配给var。在更标准的s上保存2个字节,n=>s.Removen,1;对,你是@apk,我已经更新了我的答案。最近JavaScript太多:P@itsme86这个解释帮助我理解了它。谢谢在数学和计算机科学中,curry是一种将对函数的求值转换为对函数序列求值的技术,该函数包含多个参数或一组参数,每个函数都有一个参数。这里不是这样的。s=>n=>s.Removen,1~s=>n=>s.Removen,1;函数taking s返回另一个函数,该函数在s上建立闭包taking n.s=>n=>s.Removen,1~s=>n=>s.Removen,1;取s的函数返回另一个在取n的s上建立闭包的函数,作为一个表达式体函数:Func f=>s=>n=>s.Removen,1;作为一个表达式体函数:Func f=>s=>n=>s.Removen,1;