Programowanie w rzutkach - typef

ZA typedeflub alias typu funkcji pomaga zdefiniować wskaźniki do kodu wykonywalnego w pamięci. Mówiąc najprościej, atypedef może służyć jako wskaźnik odwołujący się do funkcji.

Poniżej podano kroki do wdrożenia typedefs w programie Dart.

Step 1: Defining a typedef

ZA typedefmożna użyć do określenia sygnatury funkcji, do której mają pasować określone funkcje. Podpis funkcji jest definiowany przez parametry funkcji (w tym ich typy). Zwracany typ nie jest częścią podpisu funkcji. Jego składnia jest następująca.

typedef function_name(parameters)

Step 2: Assigning a Function to a typedef Variable

Zmienna typedef może wskazywać na dowolną funkcję mającą taki sam podpis jak typedef. Możesz użyć następującego podpisu, aby przypisać funkcję do plikutypedef zmienna.

type_def  var_name = function_name

Step 3: Invoking a Function

Plik typedefzmienna może służyć do wywoływania funkcji. Oto, jak możesz wywołać funkcję -

var_name(parameters)

Przykład

Weźmy teraz przykład, aby zrozumieć więcej typedef w Dart.

Najpierw zdefiniujmy a typedef. Tutaj definiujemy sygnaturę funkcji. Funkcja przyjmie dwa parametry wejściowe tego typuinteger. Typ zwracany nie jest częścią podpisu funkcji.

typedef ManyOperation(int firstNo , int secondNo); //function signature

Następnie zdefiniujmy funkcje. Zdefiniuj niektóre funkcje z taką samą sygnaturą funkcji, jak w przypadkuManyOperation 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}"); 
}

Na koniec wywołamy funkcję za pośrednictwem typedef. Zadeklaruj zmienną typu ManyOperations. Przypisz nazwę funkcji do zadeklarowanej zmiennej.

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);

Plik operzmienna może wskazywać na dowolną metodę, która przyjmuje dwa parametry całkowite. PlikAddodwołanie do funkcji jest przypisane do zmiennej. Typedefs może przełączać odwołania do funkcji w czasie wykonywania

Połączmy teraz wszystkie części i zobaczmy cały program.

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); 
}

Program powinien generować następujące elementy output -

Add result is 30 
Subtract result is 10 
Divide result is 10.0

Note - Powyższy kod spowoduje błąd, jeśli plik typedef zmienna próbuje wskazać funkcję z inną sygnaturą funkcji.

Przykład

Typedefsmożna również przekazać jako parametr do funkcji. Rozważmy następujący przykład -

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); 
}

Spowoduje to, co następuje output -

Inside calculator 
Add result is 10 
Inside calculator 
Subtract result is 0 
Inside calculator 
Divide result is 1.0