Resto de parámetros en LISP

La lista de parámetros de la función LISP tiene como objetivo básico declarar las variables que recibirán los argumentos que se pasan en la función. Normalmente, la lista de parámetros contiene una lista básica de nombres de variables, esos parámetros se denominan «parámetros requeridos». Si se llama a una función, para cada parámetro requerido se debe proporcionar un argumento individual, si se llama con más o menos argumentos, LISP mostrará un error.

Tipos de parámetros en la lista de parámetros

  • Parámetros requeridos
  • Parámetros opcionales
  • Parámetros de descanso
  • Parámetros de palabras clave

Parámetros de descanso

A veces, una función necesita tomar una cantidad variable de argumentos, por ejemplo, tome la función + en LISP que toma la cantidad variable de argumentos y no se limita solo a 2 argumentos, las posibles llamadas a la función + incluyen: 

(+)
(+ 9)
(+ 5 2)
(+ 3 7 1)

Entonces, como puede ver, la lista de parámetros para la función + puede ser similar a esto: 

(defun + (&rest numbers) ...) 

Pero puede dudar de que también podamos escribir estas funciones que tomarían una cantidad variable de argumentos al tener múltiples parámetros opcionales, pero una cantidad tan increíble de parámetros de manejo no se considera una etiqueta LISP correcta.

La sintaxis para definir los parámetros de descanso:

Para definir cualquier parámetro de descanso en la función, agregue el símbolo: &rest antes del nombre del parámetro. Cuando llama a una función, todos los argumentos después de los parámetros obligatorios y opcionales se agrupan en una lista y se convierten en el valor del parámetro &rest .

Ejemplo:

Vamos a crear una función donde r1 y r2 serán parámetros requeridos y cualquier otra cosa que no sean parámetros de descanso .

(defun rest_example (r1 r2 &rest rest)...)

Ahora que sabemos que los argumentos después de que los parámetros requeridos y opcionales se agrupan en una lista de parámetros de descanso, imprimamos esos parámetros de descanso junto con nuestros parámetros requeridos.

(format t "Required parameters: ~d & ~d.~%" r1 r2)
(format t "Rest parameters: ~d~%" rest)

Ahora llamemos a esta función pasando solo los parámetros requeridos y la segunda vez pasando también con los parámetros de descanso

(rest_example 50 80)
(rest_example 40 60 75 67 10 30)

Código: 

Lisp

(defun rest_example (r1 r2 &rest rest)
  (format t "Required parameters: ~d & ~d.~%" r1 r2)
  (format t "Rest parameters: ~d~%" rest))
  
(rest_example 50 80)
(terpri)
(rest_example 40 60 75 67 10 30)

Producción : 

Required parameters: 50 & 80.
Rest parameters: NIL

Required parameters: 40 & 60.
Rest parameters: (75 67 10 30)

Como puede ver en nuestra primera llamada, no pasamos ningún parámetro de descanso, por lo que el valor del parámetro de descanso era NIL, pero cuando llamamos a la función con parámetros de descanso, todos nuestros argumentos, además de los parámetros requeridos, se agrupan en una lista de parámetros de descanso. parámetros

Publicación traducida automáticamente

Artículo escrito por aniruddhashriwant y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *