Функциональное программирование




Чтение и запись информации в файлы


ЛЕКЦИЯ 10.

Чтение и запись информации в файлы


Содержание



10.1 Задание параметров при определении функций.

При определении функции можно использовать механизм ключевых слов для того чтобы при вызове функций аргументы трактовать по разному.

С помощью ключевых слов в лямбда-списке можно выделить

  • необязательные аргументы (optional)
  • параметр, связываемый с хвостом списка аргументов изменяющейся длины (rest)
  • ключевые параметры (key)

    Ключевые слова начинаются с символа & и их записывают перед соответствующими параметрами в лямбда-списке.

    Действие ключевого слова распростроняется до следующего ключевого слова.

    Параметры, перечисленные в лямбда-списке до первого ключевого слова, являются обязательными.


    10.1.1 Необязательные параметры &optional

    Вы можете определить необязательные аргументы для вашей функции. Любой аргумент после символа &optional необязательный:

    * ( Defun bar ( x &optional y) ( if y x 0 )) bar * ( Defun baaz ( &optional ( x 3 ) ( z 10 )) ( + x z) ) BAAZ * ( bar 5 ) 0 * ( bar 5 t) 5 * ( Baaz 5 ) 15 * ( Baaz 5 6 ) 11 * (Baaz) 13

    Можно вызывать функцию bar или с одним или с двумя аргументами. Если она вызвана с одним аргументом, x будет связано со значением этого аргумента и незаданный аргумент y будет связан с nil; если она вызвана с двумя аргументами,x и y будут свя- заны со значениями первого и второго аргумента, соответственно.

    Функция baaz имеет два необязательных аргумента. Кроме этого она определяет недостающие знaчения для каждого из них: если пользователь определит только один аргумент, z будет связано с 10 вместо nil, и если пользователь не определит никаких аргументов, x будет связана с 3 и z с 10.

    Такое определение значений называется определение по умолчанию.


    10.1.2 Переменное количество аргументов &rest

    Вы можете задавать вашу функцию принимающей любое число аргументов, заканчивая список аргументов &rest параметром.

    LISP будет собирать все аргументы не попавшие в обязательные параметры в список и связывать &rest параметр с этем списком.




    Содержание    Вперед