Percursos
/
Common Lisp
Common Lisp
/
Programa
/
Parâmetros opcionais
Pa

Parâmetros opcionais em Common Lisp

2 exercícios

Sobre Parâmetros opcionais

Um parâmetro opcional é designado pela palavra-chave &optional numa lambda list. Os parâmetros opcionais não são obrigatórios, podem ter um valor predefinido e também podem especificar um «parâmetro supplied-p», que será «verdadeiro» ou «falso» consoante tenha sido fornecido ou não um argumento para o parâmetro.

(defun optional-parameter (&optional (arg -1)) arg)
(optional-parameter)    ; => -1
(optional-parameter 13) ; => 13

Os parâmetros opcionais têm de ser colocados depois dos parâmetros obrigatórios, mas antes dos parâmetros nomeados ou rest. Os argumentos são associados primeiro aos parâmetros obrigatórios, depois aos parâmetros opcionais e, por fim, aos parâmetros rest e nomeados.

(defun req-and-opt (req &optional (opt -1)) (list req opt)
(req-and-opt 1)    ; => (1 -1)
(req-and-opt 1 13) ; => (1 13)

Embora seja possível combinar vários tipos de parâmetros com outros tipos de parâmetros (parâmetros opcionais e parâmetros keyword), isso pode ser problemático e deve ser feito com cuidado. Vê a secção «Mixing Different Parameter Types» em Practical Common Lisp.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Parâmetros opcionais

A prática está bloqueada

Desbloqueia mais 1 exercício para praticares Parâmetros opcionais