1
我一直在試圖將一些C#到F#和尚未準備好,因爲我是比較新的F#如何將C#中的Parallel.Foreach轉換爲F#?
這裏是工作的C#代碼片段:
static void doParallelForeach()
{
// The sum of these elements is 40.
int[] input = { 4, 1, 6, 2, 9, 5, 10, 3 };
int sum = 0;
Parallel.ForEach(
input,
() => 0,
(n, loopState, localSum) =>
{
localSum += n;
Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum);
return localSum;
},
(localSum) => Interlocked.Add(ref sum, localSum)
);
}
這裏是F#導致此編譯器錯誤的代碼片段:沒有重載符合方法「ForEach」。
let doParallelForeach =
let input:int[] = [|4; 1; 6; 2; 9; 5; 10; 3|]
let sum = 0
Parallel.ForEach
(
input,
(fun()-> 0),
(fun (n, loopState, localSum) ->
localSum += n
Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum);
return localSum),
(fun (localSum) -> Interlocked.Add(ref sum, localSum))
)
有人能解釋我在做什麼錯嗎?
您是否嘗試過檢查列表或Seq iter /地圖? – Pacane 2013-04-29 20:22:53