Programmazione Dart - Typedef
UN typedef, o un alias del tipo di funzione, aiuta a definire i puntatori al codice eseguibile all'interno della memoria. In poche parole, atypedef può essere usato come un puntatore che fa riferimento a una funzione.
Di seguito sono riportati i passaggi da implementare typedefs in un programma Dart.
Step 1: Defining a typedef
UN typedefpuò essere usato per specificare una firma di funzione che vogliamo che funzioni specifiche corrispondano. Una firma di funzione è definita dai parametri di una funzione (inclusi i loro tipi). Il tipo restituito non fa parte della firma della funzione. La sua sintassi è la seguente.
typedef function_name(parameters)
Step 2: Assigning a Function to a typedef Variable
Una variabile di typedef può puntare a qualsiasi funzione che abbia la stessa firma di typedef. È possibile utilizzare la seguente firma per assegnare una funzione a un filetypedef variabile.
type_def var_name = function_name
Step 3: Invoking a Function
Il typedefvariabile può essere utilizzata per invocare funzioni. Ecco come puoi invocare una funzione:
var_name(parameters)
Esempio
Facciamo ora un esempio per capirne di più typedef a Dart.
Inizialmente, definiamo un file typedef. Qui stiamo definendo una firma di funzione. La funzione accetta due parametri di input del tipointeger. Il tipo restituito non fa parte della firma della funzione.
typedef ManyOperation(int firstNo , int secondNo); //function signature
Successivamente, definiamo le funzioni. Definire alcune funzioni con la stessa firma di funzione di quella diManyOperation 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}");
}
Infine, invocheremo la funzione tramite typedef. Dichiarare una variabile del tipo ManyOperations. Assegna il nome della funzione alla variabile dichiarata.
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);
Il opervariabile può puntare a qualsiasi metodo che accetta due parametri interi. IlAddil riferimento della funzione è assegnato alla variabile. I typedef possono cambiare i riferimenti alle funzioni in fase di esecuzione
Mettiamo ora insieme tutte le parti e vediamo il programma completo.
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);
}
Il programma dovrebbe produrre quanto segue output -
Add result is 30
Subtract result is 10
Divide result is 10.0
Note - Il codice precedente genererà un errore se il file typedef variabile cerca di puntare a una funzione con una firma di funzione diversa.
Esempio
Typedefspuò anche essere passato come parametro a una funzione. Considera il seguente esempio:
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);
}
Produrrà quanto segue output -
Inside calculator
Add result is 10
Inside calculator
Subtract result is 0
Inside calculator
Divide result is 1.0