Scheme/Tutorial/5
Материал из ALT Linux Wiki
(Import from freesource.info) |
м (викификация) |
||
(8 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | |||
- | |||
- | |||
=== 11 Локальные переменные === | === 11 Локальные переменные === | ||
Проведём небольшое усовершенствование своих познаний по Scheme. | Проведём небольшое усовершенствование своих познаний по Scheme. | ||
Строка 7: | Строка 4: | ||
В Scheme применяется привычный всем подход к областям видимости переменных (так называемый Lexical Scope): | В Scheme применяется привычный всем подход к областям видимости переменных (так называемый Lexical Scope): | ||
- | + | * переменные, определённые внутри некоторой функции, видны во всех функциях, определённых внутри данной, но не видны вне её: | |
<pre>(define a 3) | <pre>(define a 3) | ||
Строка 13: | Строка 10: | ||
(define b 4) | (define b 4) | ||
(define (g) | (define (g) | ||
- | (write b)) ; мы видим эту переменную так как g сама определена внутри f | + | (write b)) ; мы видим эту переменную, так как g сама определена внутри f |
(g) | (g) | ||
- | (write a) ; мы видим эту переменную ибо она в охватывающем окружении | + | (write a) ; мы видим эту переменную, ибо она в охватывающем окружении |
(write b)) ; это наша локальная переменная | (write b)) ; это наша локальная переменная | ||
- | (write b) ; ошибка | + | (write b) ; ошибка -- b определена внутри f и не видна на вышестоящем уровне.</pre> |
- | + | * локальные переменные затеняют глобальные: | |
<pre>(define a 3) | <pre>(define a 3) | ||
Строка 29: | Строка 26: | ||
(f) ; будет напечатано 4, а не 3, так как локальная переменная затенила глобальную.</pre> | (f) ; будет напечатано 4, а не 3, так как локальная переменная затенила глобальную.</pre> | ||
- | * параметры у многоаргументных функций | + | * параметры у многоаргументных функций суть локальные переменные со всеми вытекающими последствиями: |
<pre>(define x 4) | <pre>(define x 4) | ||
Строка 35: | Строка 32: | ||
(write x)) | (write x)) | ||
- | (f 5) ; будет напечатано 5, а не 4 ибо x - локальная переменная в функции f.</pre> | + | (f 5) ; будет напечатано 5, а не 4, ибо x -- локальная переменная в функции f.</pre> |
+ | |||
+ | '''[[Scheme/Tutorial/6|далее>>]]''' | ||
- | + | {{Category navigation|title=Scheme|category=Scheme|sortkey=Tutorial}} |
Текущая версия на 08:57, 11 мая 2012
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.