Вход:  Пароль:  
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

12 локальные переменные (продолжение)

Продолжаем неустанно совершенствоваться в Scheme. Вы уже видели в предыдущий раз, что локальные переменные можно объявлять в теле функции, пользуясь тем же самым define

Однако есть ещё несколько интересных и полезных приёмов работы. Воспользуемся тем, что параметры функции по сути те же локальные переменные.
Тогда пример выше, можно было бы сделать следующим образом:

Попробуем понять что же произошло. Мы создали функцию с параметром, который назвали 'a', поместили в неё всё что нам необходимо, и после этого запустили её придав параметру требуемое значение '5'. Всё, как говорится, гениально и просто.
Попробуем ещё, вместо:

мы можем написать:

Данный приём настолько популярен, что имеет общепринятое сокращение – let.
Приведённые выражения в сокращённом виде записываются так:


Если немного поразмышлять, то мы получили не просто способ объявления локальных переменных, а возможность делать блоки с локальными переменными в произвольном месте кода, например:


У этого приёма есть один существенный недостаток, поскольку формальные параметры инициализируются независимо друг от друга и в неопределённом порядке, мы не можем использовать одни из них для инициализации других, например в примере с двумя параметрами нельзя у задать равным x.
Но против лома всегда есть другой лом.
Применим одну маленькую хитрость – будем связывать переменные по очереди:

Тогда всё получится, на момент определения 'y', 'x' уже известен и проинициализирован.
Этот приём тоже очень распространён, а потому тоже имеет общепринятое сокращение – let*.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]