• # send et method/call

    Posté par . En réponse au message Pointeur de fonction ?. Évalué à 2.

    Je vois deux solutions 'simple' une avec send (on envoie un message à l'objet, c'est la façon smalltalk d'appeler une methode il me semble) :

    my_function="mi"
    send(my_function,1,2,3,4);

    my_function=:log
    send(my_function,1,2,3,4)


    Ou avec method et call cité plus haut :

    my_function = method(:mi)
    my_function.call(1,2,3,4)

    my_function = method("log")
    my_function.call(1,2,3,4)


    Dans les deux cas on peu utiliser une chaine de carractere ou un symbole (:mi ou :log). J'imagine qu'avec un symbole le code doit etre plus performant, cela dit je n'en suis pas sur.

    Comme en ruby la ligne de code "my_function(1,2,3,4)" serais equivalent à "self.send(:my_function,1,2,3,4)" je ne crois pas qu'il existe de solution où l'on puisse appeler "my_function(1,2,3,4)" comme on le ferais avec un pointeur de fonction en C par exemple.

    Cordialement.