我偶然发现了code golf question:
给定一个字符串
s
和一个表示n
中的索引的整数s
,输出s
并移除n
个位置的字符。
投票率最高的answer(截至本文)是在C#中。
s=>n=>s.Remove(n,1);
这种多=>
语法是什么?它看起来类似于lambda表达式(s,n)=>s.Remove(n,1)
,但我无法弄清楚如何使用此代码。
答案 0 :(得分:9)
当它分散一点时非常简单!
s =>
n =>
s.Remove(n, 1);
让我们调用我们的函数fn
:使用变量fn
调用s
会返回另一个带变量n
的函数。
fn("hello")(0)
你可以看到,在致电fn("hello")
之后,我们实际上已经得到了这个:
n => "hello".Remove(n, 1);
因此,当我们调用返回的函数时,我们通过给它n
来执行它。
答案 1 :(得分:0)
如果没有类型定义,对我来说似乎不是一个有效的答案:
Func<string, Func<int, string>> f = s => n => s.Remove(n, 1);
string result = f("123")(1); // "13"