[pyar] Funciones lambdas dentro de for

Angel Java Lopez ajlopez2000 en gmail.com
Mie Sep 24 16:25:00 ART 2014


Ah! No se que sera eso de "capturar el Environment"...

Pero el truco del i = i que pusieron por ahi, seria algo como:

for (var k = 1; k <= 3; k++)
    functions.push((function (k) { return function(dynamic) { return
mifunc(k, dynamic); })(k));

o sea, armar una funcion anonima e invocarla ahi mismo, pasandole el
parametro k.

Jeje.. pero por lo menos para mi, es menos claro que poner directamente una
funcion factoria de funciones

Igual, cualquiera de las dos variantes, lo hubiera armado con el flujo de
TDD... recuerden: sin TDD no hay paraiso ;-)

Angel "Java" Lopez
@ajlopez


2014-09-24 16:15 GMT-03:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:

>
>
> 2014-09-24 12:41 GMT-03:00 Angel Java Lopez <ajlopez2000 en gmail.com>:
>
>> Si, es lo que pasa en otros lenguajes con closure de ese tipo, como
>> JavaScript.
>>
>> Lo que hago (disculpen, ni idea de Python) es, en JavaScript, el viejo
>> truco del makefn:
>>
>> function mifunc(static, dynamic) {
>>   console.log(static, dynamic);
>> }
>>
>> function makefn(static) {
>>     return function (dynamic) {
>>         return mifunc(static, dynamic);
>>     }
>> }
>>
>> var functions = [];
>>
>> for (var k = 1; k <= 3; k++)
>>     functions.push(makefn(k));
>>
>>
> Ah mirá!, ¿no hay forma de capturar el Environment en Javascript?
>
> Una pregunta al margen, perdón a la gente de la lista.
> ¿Conocés alguna lista de Javascript onda Pyar? Hace un tiempo estuve
> buscando, y creo que me subscribí a una, pero está muerta.
> Gracias!
>
>
>>
>> 2014-09-24 12:37 GMT-03:00 fisa <fisadev en gmail.com>:
>>
>>> Porque cada lambda está teniendo una clausura a la variable "i", que
>>>
>>> se crea para el for, pero es la misma variable que se usa a lo largo
>>> de todos los ciclos. Todas tus funciones tienen clausuras a esa misma
>>> variable, que al final termina teniendo el 3.
>>>
>>> El día 24 de septiembre de 2014, 12:34, Manuel Kaufmann
>>> <humitos en gmail.com> escribió:
>>> > Hola lista!
>>> >
>>> > Ahora sí que estoy descolocado. Esperaba un resultado diferente a esto
>>> > y aún no entiendo su porqué.
>>> >
>>> >>>> def mifunc(static, dynamic):
>>> > ...   print static, dynamic
>>> > ...
>>> >>>> functions = []
>>> >>>> for i in (1,2,3):
>>> > ...   functions.append(lambda d: mifunc(i, d))
>>> > ...
>>> >>>> functions[0](55)
>>> > 3 55
>>> >>>> functions[1](55)
>>> > 3 55
>>> >>>> functions[2](55)
>>> > 3 55
>>> >>>>
>>> >
>>> > Yo esperaba los resultados:
>>> > 1 55
>>> > 2 55
>>> > 3 55
>>> >
>>> > ¿Porqué esto no es así?
>>> >
>>> > --
>>> > Kaufmann Manuel
>>> > -- http://elblogdehumitos.com.ar
>>> > _______________________________________________
>>> > pyar mailing list pyar en python.org.ar
>>> > http://listas.python.org.ar/listinfo/pyar
>>> >
>>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >
>>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>>
>>>
>>> --
>>> fisa  -  Juan Pedro Fisanotti
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140924/868678ac/attachment-0001.html>


More information about the pyar mailing list