函數N次,結果存儲在數組中,我想在lambda-Y的方式來調用函數的N倍,結果存儲在一個陣列(或結果附加到一個列表)。我會怎麼做?呼叫使用蘭巴
我已經試過Enumerable.Repeat(fun(), n).ToArray();
這將是理想的,但有趣的()只調用一次。
函數N次,結果存儲在數組中,我想在lambda-Y的方式來調用函數的N倍,結果存儲在一個陣列(或結果附加到一個列表)。我會怎麼做?呼叫使用蘭巴
我已經試過Enumerable.Repeat(fun(), n).ToArray();
這將是理想的,但有趣的()只調用一次。
n次調用一個隨機函數並保留所有結果。
IEnumerable<T> CallRepeatedly<T>(Func<T> a, int count)
{
for(int i=0; i<count; i++)
{
yield return a();
}
yield break;
}
是這樣的,你在找什麼?我不確定Func會在每次調用中返回不同結果的條件,但您可以輕鬆地重構將索引作爲參數。
我沒有想到這樣的事情,野! –
+1基本解釋BrokenGlass的解決方案是如何工作的。我會使用'Enumerable.Range'版本,因爲它具有相同的行爲,但出錯的可能性較小。注意:函數結束時不需要「yield break」,這是隱含的。 –
如果將它添加到像'public static class Enumerable {...}這樣的小類中,就像您想要的方法不會丟失一樣。 –
我們假設你的函數有一個整型參數,那麼像這樣的工作(否則有你所需要的參數代替):
int n = 10;
var results = Enumerable.Range(0, n)
.Select(myFunction)
.ToArray();
在這個例子中myFunction
會有什麼Func<int, T>
其中T
是你的回報類型。
您需要添加更多詳細信息。什麼類型的對象 - 細節男人! – OneFineDay
引用lambda中的數組或列表,可能是捕獲的變量。 – SJuan76
@DonA - 可以說有一個沒有參數的函數,返回一個int。看來我應該可以使用Enumerator.Repeat,但我現在很累。 –