Re[6]: Внутренние функции класса
От: rg45 СССР  
Дата: 19.01.19 06:52
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:

BFE>Чем плохо:

BFE>
BFE>void Foo::Prn()
BFE>{
BFE>    auto fnEnabled = [](bool b) -> const char* { return b ? "enabled" : "disabled"; };

BFE>    std::cout << "filter   : " << fnEnabled(m_bFilter  ) << std::endl
BFE>              << "leds     : " << fnEnabled(m_bLeds    ) << std::endl
BFE>              << "detector : " << fnEnabled(m_bDetector) << std::endl;
BFE>}
BFE>

BFE>?

Ну, хорошо, согласен, полльза от такого применения лямбд есть: это позволяет давать функциям (лямбдам) максимально простые имена, не засоряя пространство имен, пусть даже анонимное. Но, что мне все же не нравится, это то, что мы исплоьзуем лямду не потому, что нам нужна лябмда, как таковая, а просто потому, что правила языка не позволяют нам определять функции внутри других функций. Нам же никогда не прийдет в голову написать лямбду в пространстве имен там, где достаточно обычной функции. Вот поэтому такое использование лямбд кажется мне нецелевым. Хотя и оправданным в некоторых случаях, таких как этот.
--
Отредактировано 19.01.2019 6:52 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.