Заменить цикл 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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5