Je pense qu'on peut le faire avec un dictionnaire dont la clé est le case, et la valeur est une fonction à laquelle on passe un paramètre switch = {1: f1, 2: f2, 3: f3} switch.get( int(input("Fonction: ")), f4) (int(input("Valeur: "))) f4 est la fonction appelée pour le default.
Le Tout est souvent plus grand que la somme de ses parties.
@entwanne: En quoi le pattern matching va-t-il aider pour simuler un switch? @josmiley: Est-ce un problème ou une solution que d'utiliser un dictionnaire comme je l'ai suggéré?
Le Tout est souvent plus grand que la somme de ses parties.
@entwanne: Peux-tu donner un exemple simple? Fais-tu un re.search() avec une fonction? Genre "abc|def|ghi" ? Si ça match la fonction est appelée et retourne la chaîne de remplacement, sinon la condition n'est pas remplie (default).
Le Tout est souvent plus grand que la somme de ses parties.
def Case(switch):
def case(elt, fun, *args, **kwargs):
if switch.elt == elt:
fun(*args, **kwargs)
return case
def CaseList(switch):
def case(listeNb,fun,default=None ,*args, **kwargs):
liste = []
nb = 0
for i in listeNb:
if switch.elt == i:
liste.append(fun(*args, **kwargs))
nb += 1
if not default is None and nb == 0:
default()
return liste
return case
class Switch(object):
def __init__(self, nb, choixCase):
self.elt = nb
self.choixCase = choixCase
def __enter__(self):
if self.choixCase == "list":
case = CaseList(self)
else:
case = Case(self)
return case
def __exit__(self,error, n,s):
pass
exemple:
def afficher():
print("coucou")
def hello():
print("hello")
with Switch(4, "list") as test:
test([3, 1, 0], afficher,default=hello)
test([1, 4, 2], afficher,default=hello)
ça affiche:
hello
coucou
merci pour vos commentaire
- Edité par Le programmeur solitaire 30 novembre 2020 à 20:33:49
le codeFAITle bonheur (pour moi en tous cas)
j'ai crer Switch en python (commentaire)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
le code FAIT le bonheur (pour moi en tous cas)
Le Tout est souvent plus grand que la somme de ses parties.
Python c'est bon, mangez-en.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Le Tout est souvent plus grand que la somme de ses parties.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Le Tout est souvent plus grand que la somme de ses parties.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Python c'est bon, mangez-en.
Le Tout est souvent plus grand que la somme de ses parties.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
le code FAIT le bonheur (pour moi en tous cas)