首页 > 解决方案 > 只在本地使用 lambda 可以吗?

问题描述

定义一个仅在本地使用的 lambda 函数是否可以,即在当前块(函数/方法)中?考虑某些代码将被执行多次(因此将其放入函数中是合乎逻辑的)但它永远不会在块外使用的情况。

void foo() {
    auto bar = []() {
        // some code applicable only inside foo()
    };

    bar();
    bar();
    bar();
}

bar()与声明为普通函数相比,这种方法的优点和缺点是什么?

标签: c++functionlambdacode-cleanup

解决方案


如果这样做的选项可用,那么可以,请将 lambda 本地化bar到特定函数。

在 C++ 中,我们总是尽量让对象保持本地化。(使代码更容易理解,简化文档,便于重构,&c. &c..)


推荐阅读