[pyar] De Alejandro: otra duda

Familia de Teresita terefv en ltu.sld.cu
Mie Jun 26 12:30:25 ART 2013


Esto es lo humlidemente yo me había improvisado
¿Qué Ud. cree?

class Switch():
    """ Class for create every switch-case as instance.
    
    Example of usage:
        x = 11
        from switch import Switch

        y = Switch(x)

        def x1():
            print "x1"
        y.addCase((11,x1))

        def x2():
            print "x2"
        y.addCase((12,x2))

        def d():
            print 'default'
        y.setDefault(d)

        y.execute()
        
        --------------
        wich prints
        >>>
        x1
        >>>
        
    """
    def __init__(self,variable,default = None):
        self.variable = variable
        self.default  = default
        self.cases    = []

    def addCase(self,pair):
        """Where variable 'pair'=(value,function).
        """
        L = self.cases
        L.append(pair)
        self.cases = L

    def addListCases(self,values,function):
        """Where 'values' is a list.
        """
        for i in values:
            self.addCase(i,function)

    def setDefault(self,function):
        self.default = function

    def execute(self):
        for i in range(len(self.cases)):
            if self.variable == self.cases[i][0]:
                self.cases[i][1]()
                break
        else:
            if self.default:
                self.default()
  ----- Original Message ----- 
  From: Roberto Alsina 
  To: pyar en python.org.ar 
  Sent: Tuesday, June 25, 2013 8:08 PM
  Subject: Re: [pyar] De Alejandro: otra duda


  On 25/06/13 22:02, Pablo M. Mana wrote:

    Lo mas similar al switch - case en python es el: if elif else. Es muy versatil, 2 Bloques al precio de uno ;)



  La diferencia es que el if/elif es mucho mas ineficiente.

  Para hacer el equivalente de switch/case con valores constantes, se puede usar un diccionario.
  Por ejemplo, si querés que cuando x vale 1 se ejecute foo() y cuando vale 2 bar():

  d = {1: foo, 2: bar}

  resultado = d[x]()



------------------------------------------------------------------------------


  _______________________________________________
  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

--

Este mensaje le ha llegado mediante el servicio de correo electronico que ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema Nacional de Salud. La persona que envia este correo asume el compromiso de usar el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130626/8f697137/attachment-0001.html>


More information about the pyar mailing list