C++11使用lambda表達式簡化代碼

C++11最引人注目的新特性就是移動語義和lambda表達式,移動語義用來優化對象賦值, 而lambda表達式用來簡化代碼,消除冗餘的類型聲明。lambda表達式的本質, 是一個可調用對象, 下面列舉出兩個例子。java

1. 日常使用線程, 須要指定一個函數指針(或者成員函數指針)和參數,而使用lambda表達式, 能夠寫出這樣的代碼:android

Thread t;
t.setRunnable([](void){
    printf("thread run\n");
});
t.start();

2. 用於事件驅動,在android中, 能夠使用這樣的代碼,將任務發送給另一個線程處理ide

Handler handler = new Handler()//默認UI主線程
mHandler.post(new Runnable() {
    @Override
    public void run() {
       //執行任務
    }
});

如今,C++11也能寫出相似風格的代碼函數

void login(const std::string & name, const std::string & password){
    //執行登陸操做, 這是一個耗時的操做, 須要將任務分配到另一線程去執行
    post([=](void){
        HttpClient hc;
        hc.addParam("name", name);
        hc.addParam("password", Md5.encode(password));
        ...
        hc.exec();
    });
}
相關文章
相關標籤/搜索