No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

20 Días
1 Hrs
6 Min
17 Seg

Arrow functions

22/25
Recursos

Aportes 38

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Mediante el paso de parámetro por referencia a la función anónima, se puede cambiar el valor de la variable $where_am_i, devolviendo “Colombia” al hacer echo de la misma.

Tengo entendido que en el reto la salida será Mexico, ya que no es posible modificar una variable desde este tipo de funciones, sin embargo al usar parámetro por referencia hará que sea Colombia. 🤯

es Colombia debido al parametro por referencia

soy de Colombia :'v

México porque tanto los callback como las funciones de flecha no te permiten reasignar un valor a una variable global.

Colombia

<?php
// Lee variables del ámbito global
$cajero = 10;
$add_cajero = fn($add) => $cajero + $add;

echo $add_cajero(20) . PHP_EOL;  // 30



// No se puede modificar un variable del ámbito global desde una arrow function
$cajero2 = 10;
$add_cajero2 = fn($add) => $cajero += $add; 
$add_cajero2(5);
$add_cajero2(5);
$add_cajero2(6);

echo $cajero2 . PHP_EOL;  // 10 



// Otro ejemplo
$edades = [5, 21, 50, 9 ,18]; 
$mayores_de_edad = array_filter($edades, fn($current) => $current >= 18);

echo implode(" ", $mayores_de_edad) . PHP_EOL;  // 21 50 18



// Yes
$where_am_i = "México";
$change_where_am_i = fn(&$where_am_i) => $where_am_i = "Colombia";
$change_where_am_i($where_am_i);

echo $where_am_i . PHP_EOL;   // Colombia
Esta enredado pero creo que dara "Colombia".
el resultado es: Colombia, porque se pasa el parámetro por referencia y luego es modificado por la arrow functions.

El resultado es Colombia

Colombia, por que con la variable por referencia estamos modificando a la variable original "México". y en la funcion estamos indicando que esa variable cuando la ejecutemos va a ser "Colombia".
Colombia

Colombia, puesto que al pasar la variable como referencia, le indica al sistema cuál es su ubicación en memoria por lo que permite cambiar su valor real.

Colombia col
resultado "Colombia"
Colombia. Es importante destacar que las arrow functions en PHP automáticamente capturan las variables del ámbito padre por valor, pero aquí se ha forzado que se capture por referencia al incluir `&` antes del nombre de la variable `$where_am_i`.
🐘 Las funciones anónimas, también conocidas como closures, son una característica de PHP que permite la creación de funciones sin un nombre especificado. Aquí hay una explicación detallada basada en varios recursos: 1. **Definición y Creación**: Las funciones anónimas no tienen un nombre especificado al momento de la definición. Se crean utilizando la palabra clave `function` seguida de una lista opcional de parámetros y un cuerpo de función. Pueden ser asignadas a variables o pasadas como argumentos a otras funciones. Estas funciones son muy útiles como valores de parámetros que requieren una función como callback, entre otros usos. Además, están implementadas usando la clase `Closure` en PHP. 2. **Uso**: * **Asignación a Variables**: Las funciones anónimas pueden ser asignadas a variables. Por ejemplo: ```PHP $greet = function($name) { printf("Hello %s\\\\\\\r\\\\\\\n", $name); }; $greet('World'); $greet('PHP'); ``` * **Callbacks**: Las funciones anónimas son útiles como callbacks, por ejemplo, con funciones como `array_map` o `preg_replace_callback`. Por ejemplo: ```PHP echo preg\_replace\_callback('~-(\[a-z])~', function ($match) { return strtoupper($match\[1]); }, 'hello-world'); // outputs helloWorld ``` * **Herencia de Variables del Ámbito Padre**: Las funciones anónimas pueden heredar variables del ámbito en el que están definidas usando la palabra clave `use`: En este ejemplo, la función anónima tiene acceso a la variable `$message` del ámbito padre. ```PHP $message = 'hello'; $example = function () use ($message) { var\_dump($message); }; $example(); ``` 3. **Casos de Uso**: Las funciones anónimas pueden ser utilizadas en diferentes situaciones según el caso de uso. Algunos casos de uso incluyen la asignación de valores a variables, implementación de lógica de callback, y encapsulación de lógica en un ámbito local, entre otros. Las funciones anónimas son una herramienta poderosa en PHP que proporciona una forma flexible de crear y utilizar funciones en tiempo de ejecución. También permiten una organización de código más limpia y modular en ciertas situaciones. Por ejemplo, pueden ser muy útiles en situaciones donde una función se utilizará una sola vez o en casos donde una función necesita ser pasada como un argumento a otra función. También permiten una forma de capturar o "cerrar" sobre variables del ámbito circundante, proporcionando una forma de mantener el estado entre invocaciones de función.

Debido al parámetro por referencia es Colombia .

que versíon de php soporta esta fn() ?

Sería “Colombia” ya que pasa esa variable por referencia a dicha arrow function, para que pueda cambiar el contenido de la misma.

El resultado es Colombia, debido a que estamos usando el lugar donde esta almacenado la variable en memoria para poder sobre escribirla. muy chulo… no pensé que podía hacer uso de las variables por referencias.

estaba pensando que devolvería México por que estaba pensando en solo esta clase y tenia entendido que con las arrow function no podíamos escribir en una variable de ámbito global pero volví a repasar la clase de paso por referencia y en realidad no estamos escribiendo es como si al imprimir $where_am_i estuviéramos enviando desde un inicio al espacio en memoria el nombre de Colombia. así que esa es la respuesta.

esa fue mi forma de entenderlo y analizarlo no se si estuvo o esta bien pero así di con la respuesta.

colombia. Retaxmaster.

El secreto está en la segunda línea, con el &.
No olvides que una arrow función solo lee la variable, pero en este caso está leyendo su referencia en memoria.
¿Entonces porque $where_am_i = “Colombia”? Esto ocurre porque cambio el valor en la referencia, NO en la variable.

Puede que me equivoque, pero entiendo que esto es lo que ocurre.

colombia

Colombia por el parametro por referencia

Crape diem:
Umm… muy interesante este reto. Tal como está escrito el código estamos utilizando un solo espacio de memoria todo el tiempo, por ello la variable cambia su valor inicial de “México” a “Colombia”.
Pero si quitamos el símbolo & en la arrow function, tenemos en realidad dos variables que llevan el mismo nombre pero con su espacio de memoria individual. Por ello aunque la arrow function logra poner el valor “Colombia”, la función echo está mostrando el valor de la primera variable “México”.
Saluti,
Fabricio

Colombia

La respuesta será Colombia ya que esta pasando un parámetro por referencia.

La respuesta es Colombia, ya que al utilizar el &, el paso del parámetro es por referencia.

Colombia

La respuesta es Colombia porque el paso del parámetro es por referencia, de loo contario sería México porque las arrow function no pueden modificar variables globales.

La respuesta del Retax es Colombia.

Las arow functions no funcionan para escribir variables del ambito global, es decir solo las leen por lo que tu no puedes hacer :

$cajero = 10;
$add_cajero = fn($add) => $cajero += $add; //no escribe las variables globales
$add_cajero(5);
$add_cajero(5);
$add_cajero(6);
echo $cajero  //seguira siendo 10 en lugar de 26

Colombia

Si pienso que es Colombia

Colombia

Colombia