use*_*453 1 c++ python functional-programming
我非常喜欢functools.partial
python中的函数以及这个函数的概念.作为示例考虑以下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)
Run Code Online (Sandbox Code Playgroud)
C++中有没有提供类似功能的东西?
是的,lambda函数:
auto func_p = [](int b){return func(1, b, 1);};
func_p(1);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我个人也喜欢Python中的lambdas.考虑以下:
lambda b: func(b**2, b, b - 3)
Run Code Online (Sandbox Code Playgroud)
这是无法做到的functools
.为什么有两种不同的解决方案(一种仅适用于某些情况)?
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
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;
}
Run Code Online (Sandbox Code Playgroud)