Заменить цикл for лямбда-выражением - C#
Формулировка задачи:
Лямбды идеально меняют цикл foreach, всякие операции поиска-сортировки. Для программиста все сокращается и упрощается. А можно ли их использовать, если все массивы строго индексированы и оптимальным является цикл for?
Сам додумался только до такого:
Явно неоптимально, вводится лишняя операция поиска.
На мой взгляд, это костыль, и лучше уж просто цикл объявить. Что так, что так две строчки.
Есть какой-то правильный способ, или забить и работать с циклами?
// Класс одного человека.
public class Man
{
public string name; // имя.
public int age; // возраст.
}
class Program
{
static void Main(string[] args)
{
// Люди. Имена правильные, возраст неправильный.
List<Man> people = new List<Man>
{
new Man { name = "Саша", age = 19 },
new Man { name = "Витя", age = 80 },
new Man { name = "Коля", age = 11 }
};
// Получили откуда-то настоящий возраст.
List<int> ages = new List<int>{ 20, 30, 45 };
// Уточняем наш список через цикл.
for (int i = 0; i < people.Count; i++)
people[i].age = ages[i];
}
}people.ForEach(man => man.age = ages[people.IndexOf(man)]);
int j = 0;
people.ForEach(man => man.age = ages[j++]);Решение задачи: «Заменить цикл for лямбда-выражением»
textual
Листинг программы
type Man = {Name:string; Age:int}
let people = [{ Name = "Саша"; Age = 19 }
{ Name = "Витя"; Age = 80 }
{ Name = "Коля"; Age = 11 }]
let age = [20; 30 ; 45]
List.map2(fun x y -> { x with Age = y} ) people age
|> List.iter(fun x -> printfn "%s [%i]" x.Name x.Age)