2010-12-12 42 views
5

Solo estoy estudiando para un examen y no puedo encontrar la respuesta a esta pregunta en nuestras notas. Cualquier ayuda sería genial.Ventajas de pasar una función como parámetro

Muchos lenguajes permiten que las subrutinas/funciones se pasen como parámetros . Lista dos ventajas que ofrece esta, y motivar a cada ventaja con un ejemplo explicativo claro (esto no tiene por qué ser código de pseudo-código).

Respuesta

0

La respuesta simple sería que la función pasada podría utilizarse como función de devolución de llamada.

Cuando la función completa su trabajo, llamaría a la función de devolución de llamada con o sin argumentos.

2

La principal ventaja es que si la función que se llama llama a otra función, puede modificar el comportamiento de la función a la que se llama especificando a qué otra función se llama.

Lo siento, más allá de eso, tendrás que hacer tu propia tarea.

0

Aplicar una determinada acción a todos los miembros de una colección. (es decir, cuadrado cada número en él).

1

Una de las cosas que transmite una función de 'acción' a un método es la capacidad de realizar una acción contra una colección sin exponer las partes internas de esa colección.

Un uso típico es iterar sobre una colección privada llamando a la función pasada en cada elemento.

Otro es como un método de devolución de llamada.

+0

Tales como, por ejemplo, usando 'std :: transform' de C++ para aplicar la función de biblioteca estándar de C' toupper() 'a una cadena completa al mismo tiempo. –

0

Considere una función que ordena una matriz de objetos en función de la clasificación por comparación. Tal función necesita una forma de comparar 2 objetos y decir cuál es mayor que el otro. Puede pasar una función de clasificación general como un puntero a la matriz y un puntero a la función que lo ayuda a comparar dos objetos.

Consulte el tipo de STL para ver un ejemplo.

1

Piensa que eres el gerente de una cantante encantadora (en la vida de la computadora: un programa), de las siguientes dos formas para comenzar la mañana.

Situación 1: Tienes que decirle a un subordinado para hacer lo siguiente a) conseguir el desayuno para la estrella y tener mucho cuidado con el tipo de cruasanes que le gusta, recuerde que es muy molesto cuando se despierte, etc. .. b) Ponga todos los cables en las etapas utilizando tal y tal poder que este se ilumina, pero no es que uno, estos colores ...

Situación 2: Consulte a su subalterno: Preguntar al mayordomo para dar nuestra estrella su desayuno habitual Luego, pida a la tripulación que se encargue del escenario para las canciones habituales.

La situación uno es incorrecta desde el punto de vista de una computadora, es típica de una manera rápida y sucia de hacerlo. Sí, usted tiene al tipo a mano, pero él está haciendo todos los recados y manejando varias responsabilidades de diferentes tipos, por lo que puede estar confundido y, además, el orden es largo y detallado.

En la segunda situación que está delegando, esta maneja la complejidad, el orden es corto, sabemos quién está haciendo las tareas para que no encontremos una enorme bombilla de color rosa en la taza de té de la estrella (usted piensa es una broma, pero eso es exactamente lo que es un error). En pocas palabras, la complejidad se divide de manera significativa.

Si no ve por qué la situación dos es como funciones de llamada, aquí hay un pseudo código.

extern FUNCIÓN majordomo (cliente, servicio, opciones);
equipo externo FUNCTION (tarea, opciones);

startMorning FUNCIÓN() comienzan

llamada (subordinado, majordomo (for_ourstar, usual_breakfast, she_is_picky));
llamada (subordinado, tripulación (cables habituales, luces brillantes));
END

Cuestiones relacionadas