лямбда-выражение вызывается в while (), зачем нам добавлять () после лямбда-выражения - PullRequest
0 голосов
/ 25 апреля 2018
while ([&s]()->bool {
  cout << "Please Input you word<input \"q \" to exit>:"; 
  return (cin >> s) && (s != "[enter image description here][1]q"); 
}())

1 Ответ

0 голосов
/ 25 апреля 2018

Лямбда-выражения являются определениями функций. Когда вы вызываете функцию, вы должны использовать круглые скобки, но когда вы передаете функции в качестве аргументов, вы используете только имя. Если мы сохраняем лямбда-функцию в переменной с именем «condition», вы можете увидеть это лучше:

#include <iostream>
#include <string>    

using namespace std;    

int main() {
  string s{};
  auto condition = [&s]() -> bool {
    cout << "Please Input you word:";
    return ((cin >> s) && (s != "enter image description here"));
  };
  while (condition()) {
  }
  return (0);
}

Пример: http://cpp.sh/3k6js

Ссылка: http://en.cppreference.com/w/cpp/language/lambda

Это также можно записать как:

#include <iostream>
#include <string>       

int main() {
  std::string s{};
  while ([&s] {
    std::cout << "Please Input you word:";
    return ((std::cin >> s) && (s != "enter image description here"));
  }()) {
  }
  return (0);
}

Пример: http://cpp.sh/7v7gd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...