Я ДЕЙСТВИТЕЛЬНО люблю лямбды, и иметь возможность использовать их в C ++ - одно удовольствие. Но так как я привык к Haskell, где лямбды действительно хорошо вписываются в синтаксис, я пытаюсь понять, как использовать их в C ++ без написания нечитаемых длинных строк кода.
Итак, в качестве примера предположим, что я напишу это:
vector<double> foo(10,0.2);
for_each(foo.begin(), foo.end(), [](double x){ std::cout << x << " ";})
это не так сложно читать, лямбда-выражение довольно мало. Но если у меня есть функция длиной в две или три строки внутри этого for_each, это может стать проблемой для моего
код чтения-навыки:
vector<double> foo(10,0.2);
randomNumberGenerator bar;
for_each(foo.begin(), foo.end(), [](double x){ std::cout << "hello!"; x+=bar()/(1+bar()); std::cout << x << " ";})
//sorry, I couldn't think of a less stupid example...
Эта строка начинает становиться раздражающе длинной и трудной для чтения на мой вкус ...
Каковы ваши предпочтительные кодовые соглашения для этого случая? Должен ли я написать:
for_each(foo.begin(), foo.end(),
[] (double x) {
std::cout << "hello!"
x += bar()/(1+bar());
std::cout << x << " ";
});
или что-то подобное? Я все еще думаю, что этот синтаксис кажется немного неестественным и трудным для чтения ...: (