Funciones de devolución de valores en LISP

En el artículo anterior sobre la función LISP , hemos visto la sintaxis de definir una función y llamar a la función pasando algunos argumentos.

Devolviendo valores de una función:

En LISP, cualquiera que sea la última expresión en el cuerpo de una función se convierte en el valor de retorno de esa función.

Ejemplo: Vamos a crear una función que tome el parámetro de entrada de un número y duplique su valor.

Lisp

(defun double-the-number (n)
    ( * n 2)
)
  
; Making function calls : 
(write (double-the-number 5))
(terpri)    ;Linebreak
(write (double-the-number 10))
(terpri)
(write (double-the-number 20))
(terpri)

En este cuerpo de función, nuestra última expresión es:

( * n 2)

Por lo tanto, esta función devolverá el valor de esta expresión cuando se llame

Producción : 

10
20
40

Pero a veces es posible que necesitemos romper las declaraciones de condición o devolver los valores desde el medio de una función, en este caso se usa el operador especial RETURN-FROM .

La sintaxis para usar RETURN-FROM:

(return-from place value)

Aquí, el lugar es el bloque de código del que tenemos que devolver el valor específico, por ejemplo, el lugar sería el nombre de la función actual

Ejemplo: en el código LISP anterior, pongamos una condición en la que si el número es mayor que 10, la función devolverá el valor duplicando el número 10 en lugar de duplicar el número original

Lisp

(defun double-the-number (n)
    (if (> n 10)
        (return-from double-the-number (* 2 10)))
    ( * n 2)
)
  
  
;; Calling the function
(write (double-the-number 5))
(terpri)        ;Linebreak
(write (double-the-number 10))
(terpri)
(write (double-the-number 20))
(terpri)

Aquí, puede ver que en la tercera llamada a la función hemos pasado el valor de 20, pero debido a nuestra condición, duplicará el valor máximo (10), por lo tanto, con la ayuda del operador de retorno pudimos regresar inmediatamente el valor de una función.

Producción : 

10
20
20

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 *