Заменить цикл 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д