Promesas I: ¿Qué es una clausura?

Las clausuras son funciones que recuerdan sus entornos léxicos. Un entorno léxico es el ámbito en el que se declaró una función.

std::function<std::string()> parent(const std::string& value) {
  return [value]() { return value; };
}

auto remember = parent("remembers me");
remember(); // "remembers me"

Aunque value parece haber desaparecido después de que parent retorna, la función devuelta aún recuerda su valor.

  • Corrige la función greetingMaker proporcionada para que devuelva una función que recuerde el saludo proporcionado.
  • Cuando esa función devuelta recibe un nombre, devuelve "salutation, name".

Ejemplo

auto greeting = greetingMaker("Hello");
greeting("James"); // "Hello, James"

Notas

Consulta la pestaña Recursos para obtener más información sobre las clausuras.