我已经阅读了关于 lambdas、函数指针、一般匿名函数和其他相关内容的帖子/文章,但我所看到的(我认为)没有任何东西能准确地达到我想要做的事情。
看起来完成这个应该很简单,但是假设我有一个函数,其中包含我在调用时总是想做的事情,但是每次我调用它时,我都希望它运行我描述的函数(并且只需要使用一次)参数(这个匿名函数是唯一的参数)。
假设这个接受我的匿名函数作为它的参数的函数在 main.cpp 中,所以它是从 main 调用的,是否有可能以简单的方式实现它?
基本上,我试图从 C++ 中找出语法:
// Some function with partially duplicated code
void OriginalA()
{
DoThingsA();
// unique code
DoThingsB();
}
// Another function with partially duplicated code
void OriginalB()
{
DoThingsA();
// unique code
DoThingsB();
}
对此:
// Encapsulate shared functionality
// <param name="action">User defined action</param>
void UniqueWrapper(Action action)
{
DoThingsA();
action();
DoThingsB();
}
// New implmentation of A
void NewA()
{
UniqueWrapper(() =>
{
// unique code
});
}
// New implementation of B
void NewB()
{
UniqueWrapper(() =>
{
// unique code
});
}
我在这里找到了#1:http: //www.wildbunny.co.uk/blog/2012/11/01/10-steps-to-becoming-a-better-programmer/
但是像这样的设置,实际上你只需要做的就是:
theFunctionName(() => { /*unique things to do*/ });
如果这个 ^^ 是合法的调用语法,那么我只是不确定参数在 theFunctionName 的定义中的外观,显然它不是上面示例中的 (Action action)。