Информация об изменениях

Сообщение Re[6]: Внутренние функции класса от 19.01.2019 6:52

Изменено 19.01.2019 6:52 rg45

Re[6]: Внутренние функции класса
Здравствуйте, 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>?

Ну, хорошо, согласен, полльза от такого применения лямбд есть: это позволяет давать функциям (лямбдам) максимально простые имена, не засоряя пространство имен, пусть даже анонимное. Но, что мне все же не нравится, это что, мы исплоьзуем лямду не потому, что нам нужна лябмда, как таковая, а просто потому, что правила языка не позволяют нам определять функции внутри других функций. Нам же никогда не прийдет в голову написать лямбду в пространстве имен там, где достаточно обычной функции. Вот поэтому такое использование лямбд кажется мне нецелевым. Хотя и оправданным в некоторых случаях, таких как этот.
Re[6]: Внутренние функции класса
Здравствуйте, 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>?

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