Scheme/Tutorial/5
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.