我非常喜欢python中的functools.partial
函数以及这个函数的概念。作为示例考虑以下python脚本(我知道这个案例不是一个非常有用的示例,使用functools.partial,它应该只是一个简单的例子。)
import functools
def func(a, b, c):
sum = a + b + c
return sum
if __name__ == "__main__":
func_p = functools.partial(func, a=1, c=1)
sum = func_p(b=1)
print(sum)
C ++中有没有提供类似功能的东西?
答案 0 :(得分:6)
是的,lambda functions:
auto func_p = [](int b){return func(1, b, 1);};
func_p(1);
顺便说一下,我个人也喜欢Python中的lambdas。请考虑以下事项:
lambda b: func(b**2, b, b - 3)
使用functools
无法完成。为什么有两种不同的解决方案(一种仅适用于某些情况)?
应该有一个 - 最好只有一个 - 显而易见的方法。
答案 1 :(得分:4)
C ++中的类似工具可能是std::bind
。请参阅以下代码以获取说明:
#include <functional>
#include <iostream>
int func(int a, int b, int c) {
return a + b + c;
}
int main() {
auto func_p = std::bind(func, 1, std::placeholders::_1, 1);
std::cout << func_p(1) << std::endl;
}