C# 多链lambda表达式?
我偶然发现: 给定一个字符串s和一个表示s中的索引的整数n,输出s时删除第n个位置的字符 该职位投票率最高的是CC# 多链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=>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;