gpt4 book ai didi

c++ - 使用 lambdas 做嵌套函数

转载 作者:IT老高 更新时间:2023-10-28 23:12:00 25 4
gpt4 key购买 nike

大家对使用 lambda 在 C++ 中执行嵌套函数有何看法?例如,而不是这个:

static void prepare_eggs()
{
...
}

static void prepare_ham()
{
...
}

static void prepare_cheese()
{
...
}

static fry_ingredients()
{
...
}

void make_omlette()
{
prepare_eggs();
prepare_ham();
prepare_cheese();
fry_ingredients();
}

你这样做:

void make_omlette()
{
auto prepare_eggs = [&]()
{
...
};

auto prepare_ham = [&]()
{
...
};

auto prepare_cheese = [&]()
{
...
};

auto fry_ingredients = [&]()
{
...
};


prepare_eggs();
prepare_ham();
prepare_cheese();
fry_ingredients();
}

来自学习如何使用 Pascal 编码的一代,嵌套函数对我来说非常有意义。但是,在我以这种方式使用 lambda 的代码审查期间,这种用法似乎让我小组中一些经验不足的开发人员感到困惑。

最佳答案

我看不出嵌套函数本身有什么问题。我将 lambdas 用于嵌套函数,但前提是它满足某些条件:

  • 在不止一次的地方调用它。 (否则如果不是太长就直接写代码)
  • 它实际上是一个内部函数,因此在任何其他上下文中调用它都是没有意义的。
  • 足够短(最多 10 行)。

因此,在您的示例中,我不会将 lambdas 用于第一个原因。

概念上的嵌套函数很有用,原因与类中的私有(private)方法有用的原因相同。它们强制执行封装,并且更容易查看程序的结构。如果一个函数是其他函数的实现细节,那么为什么不明确地这样做呢?

我看到的最大问题是可读性;阅读具有大量嵌套和缩进的代码更加困难。此外,人们对 lambdas 还不是很满意,因此预计会有阻力。

关于c++ - 使用 lambdas 做嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com