Une fonction qui est passée en argument à une autre fonction.
L'exemple du langage C sur le site suivant est facile à comprendre. Une fonction de rappel est affectée au pointeur de fonction et passée en argument.
http://shiroibanana.blogspot.jp/2012/09/callback.html
#include<stdio.h>
typedef void (* FUNC_POINTER)(char *); 
//Fonction Cobuck 1
void callback1(char *s){
    printf("%s\n",s);
}
//Fonction de rappel 2
void callback2(char *s){
    printf("[");
    printf("%s",s);
    printf("].\n");
}
//Une fonction qui appelle une fonction de rappel
void func(char *s,FUNC_POINTER p){
    //Appeler la fonction de rappel
    p(s);
}
int main(){
    FUNC_POINTER p;
    p = callback1;
    //Appeler la fonction de rappel 1
    func("Fonction Cobuck 1",p);
    p = callback2;
    //Appeler la fonction de rappel 2
    func("Fonction Cobuck 2",p);
    return 0;
}
Résultat de l'exécution.
Fonction Cobuck 1
[Fonction Cobuck 2].
Un exemple d'utilisation d'une fonction de rappel en python. Il semble que la fonction qui appelle la fonction de rappel soit souvent décrite comme gestionnaire ↓
def handler(func,*args):
    return func(*args)
http://www.phactory.jp/cms/blog/post/admin/2010/02/python_funcpointer/
En tant que flux,
# -*- coding: utf-8 -*-
def handler(func,*args):
    return func(*args)
def callback1(message1):
    print("%s" % message1)
def callback2(message1, message2):
    print("%s, %s" % ( message1, message2) )
# main
if __name__ == "__main__":
   #Affectation de la fonction de rappel
   call = callback1
   #Exécution du gestionnaire:Fonction de rappel
   handler(call, "message1")
   #Affectation de la fonction de rappel
   call = callback2
   #Exécution du gestionnaire:Fonction de rappel
   handler(call, "message1", "message2")
Résultat de l'exécution.
message1
message1, message2
Le membre "func" dans la classe a une variable qui agit comme un pointeur de fonction, mais fondamentalement la même chose est faite.
# -*- coding: utf-8 -*-
class Callbacker():
    def __init__(self, func):
        self.func = func
    def handler(self, *args):
        self.func(*args)
def callback1(message1):
    print '%s' % message1
def callback2(message1, message2):
    print("%s, %s" % ( message1, message2) )
# main
if __name__ == "__main__":
    #Affectation de la fonction de rappel
    callback = Callbacker(callback1)
    print (type(callback.func))
    print ("callback.func "),
    print (callback.func)
    print ("callback1     "),
    print (callback1)
    #Exécution du gestionnaire:Fonction de rappel
    callback.handler("message1")
    print ("")
    #Affectation de la fonction de rappel
    callback.func = callback2
    print (type(callback.func))
    print ("callback.func "),
    print (callback.func)
    print ("callback2     "),
    print (callback2)
    #Exécution du gestionnaire:Fonction de rappel
    callback.handler("message1", "message2")
Résultat d'exécution
<type 'function'>
callback.func  <function callback1 at 0x7fcff9c8a9b0>
callback1      <function callback1 at 0x7fcff9c8a9b0>
message1
<type 'function'>
callback.func  <function callback2 at 0x7fcff9c8ab18>
callback2      <function callback2 at 0x7fcff9c8ab18>
message1, message2
Une fonction de rappel est une fonction qui est passée comme argument à une autre fonction.
Fondamentalement
Recommended Posts