No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Arrow functions

22/25
Recursos

Aportes 34

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 鈥淐olombia鈥 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

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
M茅xico porque tanto los callback como las funciones de flecha no te permiten reasignar un valor a una variable global.
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`.
Colombia
馃悩 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 鈥淐olombia鈥 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 = 鈥淐olombia鈥? 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 鈥淢茅xico鈥 a 鈥淐olombia鈥.
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 鈥淐olombia鈥, la funci贸n echo est谩 mostrando el valor de la primera variable 鈥淢茅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

El resultado es Colombia