Dart-Programmierung - Typedef
EIN typedefoder ein Alias vom Funktionstyp hilft beim Definieren von Zeigern auf ausführbaren Code im Speicher. Einfach gesagt, atypedef kann als Zeiger verwendet werden, der auf eine Funktion verweist.
Im Folgenden sind die zu implementierenden Schritte aufgeführt typedefs in einem Dart-Programm.
Step 1: Defining a typedef
EIN typedefkann verwendet werden, um eine Funktionssignatur anzugeben, mit der bestimmte Funktionen übereinstimmen sollen. Eine Funktionssignatur wird durch die Parameter einer Funktion (einschließlich ihrer Typen) definiert. Der Rückgabetyp ist nicht Teil der Funktionssignatur. Die Syntax lautet wie folgt.
typedef function_name(parameters)
Step 2: Assigning a Function to a typedef Variable
Eine Variable von typedef kann auf jede Funktion mit derselben Signatur wie verweisen typedef. Mit der folgenden Signatur können Sie a eine Funktion zuweisentypedef Variable.
type_def var_name = function_name
Step 3: Invoking a Function
Das typedefVariable kann verwendet werden, um Funktionen aufzurufen. So können Sie eine Funktion aufrufen:
var_name(parameters)
Beispiel
Nehmen wir nun ein Beispiel, um mehr darüber zu erfahren typedef in Dart.
Definieren wir zunächst a typedef. Hier definieren wir eine Funktionssignatur. Die Funktion akzeptiert zwei Eingabeparameter des Typsinteger. Der Rückgabetyp ist nicht Teil der Funktionssignatur.
typedef ManyOperation(int firstNo , int secondNo); //function signature
Als nächstes definieren wir die Funktionen. Definieren Sie einige Funktionen mit derselben Funktionssignatur wie die vonManyOperation typedef.
Add(int firstNo,int second){
print("Add result is ${firstNo+second}");
}
Subtract(int firstNo,int second){
print("Subtract result is ${firstNo-second}");
}
Divide(int firstNo,int second){
print("Add result is ${firstNo/second}");
}
Zum Schluss rufen wir die Funktion über auf typedef. Deklarieren Sie eine Variable vom Typ ManyOperations. Weisen Sie der deklarierten Variablen den Funktionsnamen zu.
ManyOperation oper ;
//can point to any method of same signature
oper = Add;
oper(10,20);
oper = Subtract;
oper(30,20);
oper = Divide;
oper(50,5);
Das operVariable kann auf jede Methode verweisen, die zwei ganzzahlige Parameter akzeptiert. DasAddDie Funktionsreferenz wird der Variablen zugewiesen. Typedefs können zur Laufzeit Funktionsreferenzen wechseln
Lassen Sie uns nun alle Teile zusammenfügen und das komplette Programm sehen.
typedef ManyOperation(int firstNo , int secondNo);
//function signature
Add(int firstNo,int second){
print("Add result is ${firstNo+second}");
}
Subtract(int firstNo,int second){
print("Subtract result is ${firstNo-second}");
}
Divide(int firstNo,int second){
print("Divide result is ${firstNo/second}");
}
Calculator(int a, int b, ManyOperation oper){
print("Inside calculator");
oper(a,b);
}
void main(){
ManyOperation oper = Add;
oper(10,20);
oper = Subtract;
oper(30,20);
oper = Divide;
oper(50,5);
}
Das Programm sollte Folgendes erzeugen output - -
Add result is 30
Subtract result is 10
Divide result is 10.0
Note - Der obige Code führt zu einem Fehler, wenn der typedef Variable versucht, auf eine Funktion mit einer anderen Funktionssignatur zu verweisen.
Beispiel
Typedefskann auch als Parameter an eine Funktion übergeben werden. Betrachten Sie das folgende Beispiel -
typedef ManyOperation(int firstNo , int secondNo); //function signature
Add(int firstNo,int second){
print("Add result is ${firstNo+second}");
}
Subtract(int firstNo,int second){
print("Subtract result is ${firstNo-second}");
}
Divide(int firstNo,int second){
print("Divide result is ${firstNo/second}");
}
Calculator(int a,int b ,ManyOperation oper){
print("Inside calculator");
oper(a,b);
}
main(){
Calculator(5,5,Add);
Calculator(5,5,Subtract);
Calculator(5,5,Divide);
}
Es wird Folgendes erzeugt output - -
Inside calculator
Add result is 10
Inside calculator
Subtract result is 0
Inside calculator
Divide result is 1.0