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