-2
實施例的條件(設計的):在C++中是有可能寫一個lambda這是一個條件,即只是計算結果爲真或假
我已經寫了需要可以採取「過濾器」表達的方法,並返回匹配的項數:我知道我可以調用此如下
int getCount(std::function<bool(int, int)> filter)
{
// Iterate pairs of numbers p,q
// Count number of pairs where filter(p, q) is true
// Return count
}
:
getCount([](int x, int y) { return x > y; });
但是,由於意圖是寫一個過濾器「條件」或「表達」,即一些非常具有說明性而非強制性的東西,我理想地希望排除「返回」聲明。
線沿線的東西:
getCount([](int x, int y) { x > y; });
或
getCount([](int x, int y) { x > y });
顯然,以上是不可能的,但有在例如性病或升壓任何東西,讓我實現這個意向?
基本上getCount方法的用戶只需要能夠提供一個過濾條件,而不必說「返回」作爲一個命令性語句。
如果沒有'return'就不能返回。 – NathanOliver
@NathanOliver我稍微更新了我的問題。更清楚的是,如果我有一個語句「int a = b + c;」短語「b + c」實際上返回b + c的值,但我們不必說「返回」。我想簡單地說「int a = myfunc」;在別的地方我說myfunc是「b + c」而不必說「return」。 – nappyfalcon
我們不必在那裏說'return',因爲我們不在函數中。抽象地說,'int a = b + c;'調用'operator +'作爲'int',它添加並且返回一個值,然後這個值被賦值給'a'。那個'operator +'還在做'return'。就像我說過的,你不能使用'return'來返回一個函數的值。 – NathanOliver