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