Треки
/
Common Lisp
Common Lisp
/
Салабус
/
Необовʼязкові параметри
Не

Необовʼязкові параметри у Common Lisp

2 вправи

Про концепцію Необовʼязкові параметри

Необовʼязковий параметр задають ключовим словом &optional у лямбда-списку. Необовʼязкові параметри не вимагаються, можуть мати типове значення, а також можуть задавати «параметр supplied-p», який матиме значення «правда» або «неправда» залежно від того, чи надали для цього параметра аргумент.

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

Необовʼязкові параметри треба ставити після обовʼязкових, але перед іменованими та залишковими. Аргументи спершу звʼязуються з обовʼязковими параметрами, потім з необовʼязковими, і нарешті із залишковими та іменованими.

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

Хоча різні типи параметрів можна поєднувати з іншими типами параметрів (необовʼязкові та іменовані параметри), це може бути проблематично, тож робити це слід обережно. Звернімося до розділу "Змішування різних типів параметрів" у Practical Common Lisp.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Необовʼязкові параметри

Практика заблокована

Розблокуйте ще 1 вправу, щоб практикувати концепцію Необовʼязкові параметри