Argumentos por palabra clave en Lisp
Una función brew-tea con tres parámetros &key, llamada de tres maneras.
;; &key parameters are passed by name, so a caller can skip any of
;; them and give the rest in whatever order reads best.
(defun brew-tea (leaves &key (minutes 3) (celsius 95) milk)
"Describe a cup of tea brewed from LEAVES."
(format nil "~a: ~a min at ~a C~:[~; with milk~]"
leaves minutes celsius milk))
;; Every keyword the call omits falls back to its default.
(defvar *plain* (brew-tea "sencha"))
(defvar *strong* (brew-tea "assam" :minutes 5 :milk t))
;; The callee does not care what order the keywords arrive in.
(defvar *cool-cup* (brew-tea "gyokuro" :celsius 60 :minutes 2))
(format t "~a~%~a~%~a~%" *plain* *strong* *cool-cup*)
Cómo funciona
(defun brew-tea (leaves &key (minutes 3) (celsius 95) milk)da valor por defecto a dos claves y dejamilken nil.(brew-tea "sencha")omite todas las claves, así que aplican los tres valores por defecto.(brew-tea "gyokuro" :celsius 60 :minutes 2)las pasa fuera del orden declarado, y eso no le importa a la función.
Palabras clave y builtins usados aquí
defundefvarformat
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 642
- Tokens
- 71
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 61 segundos.
Paso 2 de 3 en Funciones; paso 11 de 27 en Fundamentos del lenguaje.