先來看c++11的簡單例子。
#include <functional>
#include <iostream>
using namespace std;
using namespace std::placeholders;
int product(int a, int b){
return a * b;
}
int main(){
auto product_3 = std::bind(product, _1, 3);
cout << product_3(5) << endl;
}
上面這個例子, product 就是一般的函數宣告。而第十二行所做的事情則是建立一個新函數,叫做 product_3。product_3 和 product 做的事情差不多,只是product_3 就是 固定傳 3 到 參數 b的 product function。 如果你想要傳固定值到參數 a 的話,只要把第十二行的 3 和 _1 互換即可。
看了複雜的 c++ ,我相信你應該會更喜歡 python 的語法。以下是 python 的例子。
def add(a, b):
return a + b
import functools
add_two = functools.partial(add, b=2)
print add_two(5)
python 的例子就比 c++ 簡單多了。 從第五行很明顯看到 add_two function就是 把 b 的值固定成 2 的 add funcion。
註: 在 c++ 中,為了使用 _1 變數,必須有 using namespace std::placeholders; 。否則會出現變數未宣告的錯誤。
Nice, thanks for the explain
回覆刪除