Programación de dardos - Typedef
UNA typedef, o un alias de tipo de función, ayuda a definir punteros al código ejecutable dentro de la memoria. En pocas palabras, untypedef se puede utilizar como puntero que hace referencia a una función.
A continuación se muestran los pasos para implementar typedefs en un programa de Dart.
Step 1: Defining a typedef
UNA typedefse puede utilizar para especificar una firma de función con la que queremos que coincidan funciones específicas. La firma de una función se define mediante los parámetros de una función (incluidos sus tipos). El tipo de retorno no es parte de la firma de la función. Su sintaxis es la siguiente.
typedef function_name(parameters)
Step 2: Assigning a Function to a typedef Variable
Una variable de typedef puede apuntar a cualquier función que tenga la misma firma que typedef. Puede utilizar la siguiente firma para asignar una función a untypedef variable.
type_def var_name = function_name
Step 3: Invoking a Function
los typedefLa variable se puede utilizar para invocar funciones. Así es como puede invocar una función:
var_name(parameters)
Ejemplo
Tomemos ahora un ejemplo para entender más sobre typedef en Dart.
Primero, definamos un typedef. Aquí estamos definiendo una firma de función. La función tomará dos parámetros de entrada del tipointeger. El tipo de retorno no es parte de la firma de la función.
typedef ManyOperation(int firstNo , int secondNo); //function signature
A continuación, definamos las funciones. Definir algunas funciones con la misma firma de función que la delManyOperation 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}");
}
Finalmente, invocaremos la función a través de typedef. Declare una variable del tipo ManyOperations. Asigne el nombre de la función a la variable declarada.
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);
los operLa variable puede apuntar a cualquier método que tome dos parámetros enteros. losAddLa referencia de la función se asigna a la variable. Typedefs puede cambiar las referencias de función en tiempo de ejecución
Ahora juntemos todas las partes y veamos el programa 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);
}
El programa debe producir lo siguiente output -
Add result is 30
Subtract result is 10
Divide result is 10.0
Note - El código anterior dará como resultado un error si el typedef variable intenta apuntar a una función con una firma de función diferente.
Ejemplo
Typedefstambién se puede pasar como parámetro a una función. Considere el siguiente ejemplo:
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);
}
Producirá lo siguiente output -
Inside calculator
Add result is 10
Inside calculator
Subtract result is 0
Inside calculator
Divide result is 1.0