Miguel Angel Morán

Machines take me by surprise with great frequency...

May 2008 - Posts

Colaboración en Software Gurú: Más allá de los objetos, C# funcional

Como les comenté en posts anteriores sigo medio obsesionado con estas cosas de la programación alterna (dinámica, declarativa, funcional etc.) Les dejo un link para que visiten el sitio de la revista Software Gurú donde salió publicado un artículo mío denominado "Más allá de los objetos, C# como lenguaje funcional", en la edición de Mayo-Julio de 2008.

¡Cómprenla!

El link es:

http://www.sg.com.mx/content/view/713

Traté de explicar con varios ejemplos de como usar C# con características funcionales, me faltó un buen pero ps el espacio era limitado, igual acá profundizamos más en algunos posts posteriores.

El código fuente es este, abran una nueva aplicación de consola con Visual Studio 2008 (.NET Framework 3.5) y denle Copy Paste al siguiente código.

Lean el artículo, espero que les guste y cualquier duda me la pueden hace llegar a través de los foros de este sitio o a mi mail starcatchingboy@gmail.com

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Threading;
using System.Linq.Expressions;
 
namespace Devworx.SG
{
 
    class Program
    {
             
        //Función de orden superior
        public static Func<int,int> ConvertirMoneda(string pstrMoneda) {
        return (int pintCantidad) => 
        { return pstrMoneda == "EURO" ? pintCantidad * 15 : pintCantidad * 10;  };
       }
 
 
        static void Main()
        {
 
          //Expresiones lambda CUBO
            
            Func<int, int> lintResultado = (pintNum) => { return pintNum * pintNum; };
            Console.WriteLine(lintResultado(3));
 
 
            //Inferencia de tipos
            var lobjMsg= "Hola";
            lobjMsg.GetType().ToString();
            Console.WriteLine("El tipo inferido es " + lobjMsg.GetType().ToString());
 
            //Invocación a Función de orden superior con parámetro euro
 
            var lobjConvertidor = ConvertirMoneda("EURO");
            Console.WriteLine("La FOS regresa " + lobjConvertidor(20) + " si se le invoca con euro");
 
            //Invocación a Función de orden superior con parámetro dolar
 
            lobjConvertidor = ConvertirMoneda("DOLAR");
            Console.WriteLine("La FOS regresa " + lobjConvertidor(20) + " si se le invoca con dolar" );
 
 
            //Sumatoria sin for, al modo funcional
            Console.WriteLine("La sumatoria de 100 es: " + Enumerable.Range(1, 100).Sum());
 
            Console.ReadKey();
   
        }
 
    }
}

Un abrazo a tod@s y
¡Feliz Codificación!