Scheme/Tutorial/5: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 33: Строка 33:


(f 5) ; будет напечатано 5, а не 4 ибо x - локальная переменная в функции f.</pre>
(f 5) ; будет напечатано 5, а не 4 ибо x - локальная переменная в функции f.</pre>
{{Category navigation|title=Scheme|category=Scheme|sortkey=Tutorial}}

Версия от 06:16, 9 декабря 2008

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.