Menu
Coddy logo textTech

Closures y 'use'

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 2 de 68.

Por defecto, las funciones anónimas solo pueden acceder a las variables que se les pasan como parámetros. ¿Pero qué pasa si necesitas que tu clausura acceda a una variable del ámbito circundante? Aquí es donde entra en juego la palabra clave use.

La palabra clave use permite que un closure "capture" variables de su ámbito padre y las utilice dentro de la función:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // Salida: Welcome, Bob!
?>

Observa cómo $message está definida fuera de la función, pero al incluir use ($message) después de la lista de parámetros, el closure puede acceder y usar esa variable. Puedes capturar múltiples variables separándolas con comas: use ($var1, $var2).

Esta característica hace que los closures sean mucho más potentes, permitiéndoles trabajar con datos de su contexto circundante mientras mantienen la flexibilidad de las funciones anónimas.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

Crea una función anónima que capture un porcentaje de descuento del ámbito circundante utilizando la palabra clave use. La función debe tomar un precio como parámetro y devolver el precio final después de aplicar el descuento.

Recibirás dos entradas: el porcentaje de descuento y el precio original. Lee ambas entradas, crea un closure que capture el porcentaje de descuento, llama al closure con el precio e imprime el precio final después del descuento.

Formato de entrada: Dos líneas - la primera línea contiene el porcentaje de descuento (un número), la segunda línea contiene el precio original (un número que puede contener decimales)

Resultado esperado: El precio final después de aplicar el descuento

Hoja de referencia

La palabra clave use permite que los cierres (closures) capturen variables de su ámbito padre:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // Salida: Welcome, Bob!
?>

Puedes capturar múltiples variables separándolas con comas: use ($var1, $var2).

Pruébalo tú mismo

<?php
// Leer entradas
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));

// TODO: Crear una función anónima que capture el porcentaje de descuento usando 'use'
// La función debe tomar un parámetro de precio y devolver el precio final después del descuento


// TODO: Llamar al closure con el precio y almacenar el resultado


// Mostrar el precio final
echo $finalPrice;
?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo