我想編寫一個函數序列,當給定一個字符串將其傳遞給所有創建的函數並生成一個修改過的字符串。 例如生成和組合來自集合的函數
string[] arr = {"po", "ro", "mo", "do"};
var modify = "pomodoroX";
foreach (var token in arr)
{
modify = modify.Replace(token, "");
}
Console.WriteLine(modify); // Output: X
這解決了問題,但我感興趣的是功能性的解決方案:
Console.WriteLine(
arr.Select<string, Func<string, string>>(val => (s1 => s1.Replace(val, string.Empty)))
.Aggregate((fn1, fn2) => fn1 += fn2)
.Invoke("pomodoroX")
);
// Output: pomoroX -> Only last element applied because:
// the functions are not getting combined.
所以基本上,採取陣「改編」,併爲每個字符串創建一個函數,刪除該字符串。 目前的解決方案是有缺陷的,只適用於最後一個功能,我似乎無法將其轉換爲代表,以他們+=
運營商結合起來。
還是有更好的功能解決方案?
非常感謝朋友! Soo函數的組成與數學fn(fn2(param))一樣。 – rinormaloku
@rinormaloku,這是完全正確的。 –