J'ai plusieurs fonctions (des exemples jouets ici) :
def mi(a,b,c,d)
return a*b*c*d
end
def log(a,b,c,d)
return a/b/c/d
end
J'ai un paramètre, "mes" et je fais
case mes
when "mi"
my_function = mi # mais ça marche pas comme ça
when "log"
my_function = log # mais ça marche pas comme ça
end
et je voudrais qu'un appel à "my_function(a,b,c,d)" appelle log(a,b,c,d) ou mi(a,b,c,d) en fonction du choix du case.
J'ai trouvé une solution qui me paraît un peu gruik.
class MesMesures
def mi(a,b,c,d)
...
end # mi
def log(a,b,c,d)
...
end # log
end # class MesMesures
[...]
all_func = MesMesures.new
case mes
when "mi"
ma_fonction = all_func.method( :mi )
when "log"
ma_fonction = all_func.method( :log )
end
...
ma_fonction.call(a,b,c,d) # fonctionne !
[^] # Re: .call
Posté par Duncan Idaho . En réponse au message Pointeur de fonction ?. Évalué à 1.
J'ai plusieurs fonctions (des exemples jouets ici) :
def mi(a,b,c,d)
return a*b*c*d
end
def log(a,b,c,d)
return a/b/c/d
end
J'ai un paramètre, "mes" et je fais
case mes
when "mi"
my_function = mi # mais ça marche pas comme ça
when "log"
my_function = log # mais ça marche pas comme ça
end
et je voudrais qu'un appel à "my_function(a,b,c,d)" appelle log(a,b,c,d) ou mi(a,b,c,d) en fonction du choix du case.
J'ai trouvé une solution qui me paraît un peu gruik.
class MesMesures
def mi(a,b,c,d)
...
end # mi
def log(a,b,c,d)
...
end # log
end # class MesMesures
[...]
all_func = MesMesures.new
case mes
when "mi"
ma_fonction = all_func.method( :mi )
when "log"
ma_fonction = all_func.method( :log )
end
...
ma_fonction.call(a,b,c,d) # fonctionne !