Scheme/Tutorial/5

Материал из ALT Linux Wiki
< Scheme‎ | Tutorial
Версия от 11:57, 11 мая 2012; MichaelShigorin (обсуждение | вклад) (викификация)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

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.

далее>>