先來看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
回覆刪除