Scheme/Tutorial/5

Материал из ALT Linux Wiki
< Scheme‎ | Tutorial
Версия от 16:00, 28 июля 2008; AlexeyNikonov (обсуждение | вклад) (Import from freesource.info)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


11 Локальные переменные

Проведём небольшое усовершенствование своих познаний по Scheme.

В Scheme применяется привычный всем подход к областям видимости переменных (так называемый Lexical Scope):

* Переменные определённые внутри некоторой функции видны во всех функциях,   определённых внутри данной, но не видны вне её.
(define a 3)

(define (f)
   (define b 4)
   (define (g)
      (write b)) ; мы видим эту переменную так как g сама определена внутри f
   (g)
   (write a) ; мы видим эту переменную ибо она в охватывающем окружении
   (write b)) ; это наша локальная переменная

(write b) ; ошибка b - определена внутри f и не видна на вышестоящем уровне.
* Локальные переменные затеняют глобальные:
(define a 3)

(define (f)
   (define a 4)
   (write a))

(f) ; будет напечатано 4, а не 3, так как локальная переменная затенила глобальную.
  • параметры у многоаргументных функций, суть локальные переменные со всеми вытекающими последствиями:
(define x 4)

(define (f x)
   (write x))

(f 5) ; будет напечатано 5, а не 4 ибо x - локальная переменная в функции f.

Продолжение следует ...