多链式lambda表达式?

bud*_*udi 1 c# lambda currying

我偶然发现了这个代码高尔夫问题:

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

得票最高的答案(截至本文)是在C#中.

s=>n=>s.Remove(n,1);
Run Code Online (Sandbox Code Playgroud)

这种多重=>语法是什么?它看起来类似于lambda表达式(s,n)=>s.Remove(n,1),但我无法弄清楚如何使用此代码.

Jam*_*ger 9

当它分散一点时它很简单!

s =>
     n =>
         s.Remove(n, 1);
Run Code Online (Sandbox Code Playgroud)

让我们调用我们的函数fn:fn用变量调用s返回另一个带变量的函数n.

fn("hello")(0)
Run Code Online (Sandbox Code Playgroud)

你可以看到,在打电话之后fn("hello"),我们实际上得到了这个:

n => "hello".Remove(n, 1);
Run Code Online (Sandbox Code Playgroud)

所以当我们调用返回的函数时,我们通过赋予它来执行它n.

  • 在更标准的`(s,n)=> s.Remove(n,1);`上保存2个字节 (5认同)
  • Lambda表达式不能分配给`var`. (3认同)