lunes, 9 de febrero de 2009

mi primer sort con un Delegate :)

Alguna vez hace mucho tube que ordenar, pero lo hice de una forma muy poco eficiente.
Actualmente estoy con c# framework 2.

La forma de ordenar es super simple aqui Dejo un ejemplo:

list.Sort(
delegate(Persona foo, Persona bar){
return foo.Edad.CompareTo(bar.edad);
});


Para el framework 3 podemos usar expresines lambda de esta forma.


list.Sort(
(foo, bar) => foo.Edad.CompareTo(bar.Edad));


--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com

5 comentarios:

  1. No hay como poder pasar funciones como valores comunes y corrientes ¿no? :)

    [Es en este tipo de detalles donde C# ha avanzado a pasos agigantados comparado con Java...]

    ResponderEliminar
  2. de hecho.
    no se si es por percepcion c# cada dia se trata de parecer un poquito mas a python[de lo poco que he visto python]. o na que ver??


    --
    Atte.
    Victor Hugo Saavedra
    http://vhspiceros.blogspot.com

    ResponderEliminar
  3. Es mas bien convergencia evolutiva. Las cabezas detras de ambos lenguajes cachan de hartos otros lenguajes y van incorporando lo mejor que hay "allá afuera".

    Y funciona en ambos sentidos.

    Python tenía properties, el for-each, list-comprehensions (mas o menos la base de LINQ, aunque LINQ es mas potente) y funciones como valores "de primera clase" antes que C# (en buena parte porque le llevaba 10 años de antiguedad a C#!).

    Pero C# introdujo las annotations a los lenguajes populares, las que despues se propagaron a Java y Python terminó basando sus "decoradores" en eso. La modificación del AST (Code-DOM creo que le llaman, donde puedes manipular las expresiones que ve el compilador y e inspeccionarlas/modificarlas(?) a gusto) también es algo que C# ha hecho más popular.

    El lenguaje que sí está siendo fuertemente influido por Python es Javascript. Se nota hasta en los keywords y la convencion de doble subrayado para metodos especiales (ej: __iterator__):

    New in Javascript 1.7

    New in Javascript 1.8

    ResponderEliminar
  4. ta weno.

    esto vendria siendo listas por comprension en python o no??


    let it = (i + 3 for (i in someObj));
    try {
    while (true) {
    document.write(it.next() + "
    \n");
    }
    } catch (err if err instanceof StopIteration) {
    document.write("End of record.
    \n");
    }

    --
    Atte.
    Victor Hugo Saavedra
    http://vhspiceros.blogspot.com

    ResponderEliminar
  5. En realidad ese es un generador por comprensión. La lista por comprensión seria:

    it = [i + 3 for (i in someObj)];

    La diferencia es que un generador es una manera comoda de definir un iterador, mientras que la lista es un contenedor de cosas (a la que se le pueden aplicar subindices, ordenar, reversar, etc, etc).

    Y en estricto rigor, en JS se llaman arreglos por comprensión.

    ResponderEliminar