Eine Funktion, die als Argument an eine andere Funktion übergeben wird.
Das Beispiel der C-Sprache auf der folgenden Site ist leicht zu verstehen. Eine Rückruffunktion wird dem Funktionszeiger zugewiesen und als Argument übergeben.
http://shiroibanana.blogspot.jp/2012/09/callback.html
#include<stdio.h>
typedef void (* FUNC_POINTER)(char *);
//Cobuck-Funktion 1
void callback1(char *s){
printf("%s\n",s);
}
//Rückruffunktion 2
void callback2(char *s){
printf("[");
printf("%s",s);
printf("].\n");
}
//Eine Funktion, die eine Rückruffunktion aufruft
void func(char *s,FUNC_POINTER p){
//Rufen Sie die Rückruffunktion auf
p(s);
}
int main(){
FUNC_POINTER p;
p = callback1;
//Rückruffunktion 1
func("Cobuck-Funktion 1",p);
p = callback2;
//Rückruffunktion 2
func("Cobuck-Funktion 2",p);
return 0;
}
Ausführungsergebnis.
Cobuck-Funktion 1
[Cobuck-Funktion 2].
Ein Beispiel für die Verwendung einer Rückruffunktion in Python. Es scheint, dass die Funktion, die die Rückruffunktion aufruft, häufig als Handler ↓ bezeichnet wird
def handler(func,*args):
return func(*args)
http://www.phactory.jp/cms/blog/post/admin/2010/02/python_funcpointer/
Als Fluss,
# -*- 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__":
#Rückruffunktionszuweisung
call = callback1
#Handler-Ausführung:Rückruffunktion
handler(call, "message1")
#Rückruffunktionszuweisung
call = callback2
#Handler-Ausführung:Rückruffunktion
handler(call, "message1", "message2")
Ausführungsergebnis.
message1
message1, message2
Das Mitglied "func" in der Klasse hat eine Variable, die als Funktionszeiger fungiert, aber im Grunde wird das Gleiche getan.
# -*- 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__":
#
callback = Callbacker(callback1)
print (type(callback.func))
print ("callback.func "),
print (callback.func)
print ("callback1 "),
print (callback1)
#2. Definieren Sie eine Methode, die als Handler fungiert. 2. Definieren Sie eine Rückruffunktion. 3. Weisen Sie einem Funktionszeiger eine Rückruffunktion zu. 4. Übergeben Sie einen Funktionszeiger als Handlerargument. Rückruffunktionszuweisung Handlerausführung:Rückruffunktion
callback.handler("message1")
print ("")
#Rückruffunktionszuweisung
callback.func = callback2
print (type(callback.func))
print ("callback.func "),
print (callback.func)
print ("callback2 "),
print (callback2)
#Handler-Ausführung:Rückruffunktion
callback.handler("message1", "message2")
Ausführungsergebnis
<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
Eine Rückruffunktion ist eine Funktion, die als Argument an eine andere Funktion übergeben wird.
Grundsätzlich
Recommended Posts