有人可以閱讀我以下行lambda。如何閱讀此lambda表達式
n => n % 2 == 1
此外,如果我必須寫沒有lambda的同一段代碼,我會如何寫它。這可能會讓我明白。
的代碼另一塊低於
List<int> numbers = new List<int>{11,37,52};
List<int> oddNumbers = numbers.where(n => n % 2 == 1).ToList();
有人可以閱讀我以下行lambda。如何閱讀此lambda表達式
n => n % 2 == 1
此外,如果我必須寫沒有lambda的同一段代碼,我會如何寫它。這可能會讓我明白。
的代碼另一塊低於
List<int> numbers = new List<int>{11,37,52};
List<int> oddNumbers = numbers.where(n => n % 2 == 1).ToList();
此功能
n => n % 2 == 1
採用一個參數(n)和返回布爾值:
當重新寫爲普通功能這將是等同於
Boolean IsOdd(int n) { -- <- I've named it "IsOdd" since lambda functions have no explict names while ordinary functions have
return n % 2 == 1;
}
你下面
List<int> oddNumbers = numbers.where(n => n % 2 == 1).ToList();
我是一個LINQ表達,其選擇代碼從列表中奇數值
挑剔:它返回true,如果'n'是odd *和positive *。 – Henrik
大聲讀出表達式將是
n 'goes to' n modulus two equals one
n => n % 2 == 1
從本質上講,您可以將此lambda看作一個函數,當提供給它的值(n
)爲奇數和正數時返回true,否則返回false。你也可以這樣寫一個方法
bool IsOddAndPositive(int n)
{
return n % 2 == 1;
}
使用它作爲您的片段將
List<int> numbers = new List<int>{11, 37, 52};
List<int> oddNumbers = numbers.Where(IsOddAndPositive).ToList();
而結果(均爲您指定什麼和方法的例子)是
11, 37
至於十有二的問題,你會怎麼寫,而不拉姆達:
int[] digits = {1,2,3,4,5,6,7,8,9,10};
int[] OddDigits = new int[5];
for(int i = 0; i < digits.Length; i++)
{
if(digits[i] % 2 == 1)
{
int x = 0;
OddDigits[x] = digits[i];
x++;
}
}
爲了簡單起見,我只是用數組替換了列表。正如我在我的評論之前所述,這是一個簡單的模操作
1號線實例3點的整數 %運算符,也稱爲模運算,名單由它的第二
將其第一個操作數後,計算剩餘第二行的結果將是包含11和37
列表,你可以使用foreach寫這樣的:
List<int> numbers = new List<int> { 11, 37, 52 };
List<int> oddNumbers = new List<int>();
foreach (var num in numbers)
{
if (num % 2 == 1)
{
oddNumbers.Add(num);
}
}
你也可以使用數組。的ForEach,像這樣:
numbers.ForEach(num =>
{
if (num % 2 == 1)
oddNumbers.Add(num);
});
不知道用什麼語言,但看起來像一個lambda這需要n和返回true,如果它不被2整除 – aaronman
這應該是一個簡單的模操作,它返回奇數 – Marco
@aaronman檢查問題上的標籤。這是C#。看看你的視覺掃描兒子。 – Gusdor