~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 183F58AC8DD1D85F967C37E95EE5AACC__1700916780 ✰
Заголовок документа оригинал.:
✰ Local variable - Wikipedia ✰
Заголовок документа перевод.:
✰ Локальная переменная — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Local_variable ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/18/cc/183f58ac8dd1d85f967c37e95ee5aacc.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/18/cc/183f58ac8dd1d85f967c37e95ee5aacc__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 18:53:46 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 25 November 2023, at 15:53 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Локальная переменная — Википедия Jump to content

Локальная переменная

Из Википедии, бесплатной энциклопедии

В информатике локальная переменная — это переменная , имеющая локальную область видимости . Ссылка на локальную переменную в функции или блоке , в котором она объявлена, переопределяет то же имя переменной в более широкой области. В языках программирования , имеющих только два уровня видимости, локальные переменные противопоставляются глобальным переменным . С другой стороны, многие языки, производные от ALGOL, допускают любое количество вложенных уровней видимости, при этом частные переменные, функции, константы и типы скрыты внутри них либо с помощью вложенных блоков, либо вложенных функций . Локальные переменные имеют фундаментальное значение для процедурного программирования и, в более общем плане, модульного программирования : переменные локальной области используются, чтобы избежать проблем с побочными эффектами , которые могут возникнуть с глобальными переменными .

Область применения [ править ]

Локальные переменные могут иметь лексическую или динамическую область видимости , хотя лексическая (статическая) область видимости встречается гораздо чаще. При лексической области видимости (или лексической области видимости; также называемой статической областью видимости или статической областью видимости), если областью действия имени переменной является определенный блок, то ее областью действия является текст программы определения блока: внутри текста этого блока существует имя переменной, и привязано к значению переменной, но вне текста этого блока имя переменной не существует. Напротив, при динамической области видимости (или динамической области видимости), если областью действия имени переменной является определенный блок, то ее областью действия является этот блок и все функции, транзитивно вызываемые этим блоком (за исключением случаев, когда они снова переопределяются другим объявлением); после завершения блока имя переменной не существует. Некоторые языки, такие как Perl и Common Lisp , позволяют программисту выбирать статическую или динамическую область видимости при определении или переопределении переменной. Примеры языков, использующих динамическую область видимости, включают Logo , Emacs lisp , а также языки оболочки bash , Dash и оболочку MirBSD Korn ( mksh ) «локальное» объявление. Большинство других языков предоставляют локальные переменные с лексической областью действия.

В большинстве языков локальные переменные — это автоматические переменные , хранящиеся непосредственно в стеке вызовов . Это означает, что когда рекурсивная функция вызывает сама себя, локальным переменным в каждом экземпляре функции присваиваются отдельные адреса . Следовательно, переменные этой области действия можно объявлять, записывать и читать без какого-либо риска побочных эффектов для функций вне блока, в котором они объявлены.

Языки программирования, использующие семантику вызова по значению, предоставляют вызываемой подпрограмме собственную локальную копию аргументов переданных ей . В большинстве языков эти локальные параметры обрабатываются так же, как и другие локальные переменные внутри подпрограммы. Напротив, семантика вызова по ссылке и вызова по имени позволяет параметрам действовать как псевдонимы значений, передаваемых в качестве аргументов, позволяя подпрограмме изменять переменные за пределами ее собственной области действия.

Статические локальные переменные [ править ]

Специальный тип локальной переменной, называемый статической локальной переменной, доступен во многих основных языках (включая C / C++ , Visual Basic , VB.NET и PHP ), который позволяет сохранять значение от одного вызова функции к другому – это — статическая переменная с локальной областью действия. В этом случае рекурсивные вызовы функции также имеют доступ к (единственной, статически выделенной ) переменной. Во всех вышеперечисленных языках статические переменные объявляются как таковые с помощью специального ключевого слова класса хранения (например, static).

Статические локальные переменные в глобальных функциях имеют такое же время жизни, как и статические глобальные переменные , поскольку их значение остается в памяти на протяжении всего срока службы программы. [1] но имеют область действия функции (а не глобальную), как и в случае с автоматическими локальными переменными.

Это отличается от других вариантов использования static ключевое слово , которое имеет несколько разных значений на разных языках.

Локальные переменные в Perl [ править ]

Perl поддерживает как динамические, так и локальные переменные с лексической областью. Ключевое слово local используется для определения локальных переменных с динамической областью действия, а myиспользуется для локальных переменных с лексической областью. Поскольку динамическая область видимости сегодня менее распространена, документация Perl предупреждает, что « local это не то, что большинство людей считают «местным».». [2] Вместо этого localКлючевое слово дает временное значение с динамической областью глобальной (пакетной) переменной, которая сохраняется до конца охватывающего блока. Однако переменная видна любой функции, вызываемой из блока. [3] Чтобы создать локальные переменные с лексической областью действия, используйте команду my вместо этого оператор. [4]

Чтобы понять, как это работает, рассмотрим следующий код:

  =   1  ; 
  суб   f  ()   { 
     local   $a  ; 
      =   2  ; 
      г  (); 
  } 
 sub   g  ()   { 
     print   "$a\n"  ; 
  } 
 г  (); 
  е  (); 
  г  (); 

это выведет:

1
2
1
 

Это происходит потому, что глобальная переменная $a изменяется внутри нового временного (локального) значения. f(), но глобальное значение восстанавливается после выхода из области действия f().

С использованием my в этом случае вместо local напечатал бы 1 три раза, так как в этом случае $a переменная будет ограничена статической областью действия функции f() и не видел g().
Рэндал Л. Шварц и Том Феникс утверждают, что оператор local должно было быть другое имя, например save. [5]

Локальные переменные в Ruby [ править ]

Ruby как язык также был вдохновлен Perl, но в данном случае обозначение было упрощено: имени глобальной переменной должен предшествовать знак $, например $variable_name, а у локальной переменной перед именем просто нет знака $, например variable_name(в то время как в Perl все скалярные значения имеют знак $ впереди). Обратите внимание, что Ruby предоставляет только встроенную поддержку локальных переменных со статической областью видимости, таких как Perl. my, а не локальные переменные с динамической областью действия, такие как Perl local. Существует по крайней мере одна библиотека для Ruby, которая предоставляет переменные с динамической областью видимости. [6]

См. также [ править ]

Ссылки [ править ]

  1. ^ «Текущий стандарт C» (PDF) .   (3,61 МБ) (по состоянию на 2009 г. ) ). В частности, см. раздел 6.2.4 «Длительность хранения объектов», стр. 32.
  2. ^ perldoc.perl.org: локальный
  3. ^ perldoc.perl.org: perlsub: временные значения через local()
  4. ^ perldoc.perl.org: perlsub: частные переменные через my()
  5. ^ Рэндал Л. Шварц и Том Феникс (1 июля 2001 г.). Изучение Perl 3-го издания . О'РЕЙЛИ. пункт 4.7. ISBN  0-596-00132-0 .
  6. ^ Конрад Ирвин. «LSpace: динамическая область действия для Ruby». декабрь 2012 г. http://cirw.in/blog/lspace Проверено 16 октября 2013 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 183F58AC8DD1D85F967C37E95EE5AACC__1700916780
URL1:https://en.wikipedia.org/wiki/Local_variable
Заголовок, (Title) документа по адресу, URL1:
Local variable - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)