V programování je lokální proměnná proměnná deklarovaná v bloku kódu. Rozsah lokální proměnné začíná v místě její deklarace a končí na konci tohoto bloku [1] [2] . Například v C jsou proměnné deklarované uvnitř funkce nebo bloku lokální (v C jsou bloky odděleny složenými závorkami { a }) [3] .
Existují programovací jazyky, ve kterých lze lokální proměnnou deklarovat pouze ve funkci, protože v těchto jazycích je lokální proměnná deklarovaná v bloku deklarována ve funkci okamžitého umístění tohoto bloku.
Lokální proměnné jsou ve většině jazyků uloženy v zásobníku volání [4] . To znamená, že pokud se funkce volá rekurzivně, pak se proměnné pokaždé znovu vytvoří a přidělí osobní paměť, místo aby byly zapsány na stejné místo.
Lokální proměnná je omezena pouze množstvím paměti přidělené operačním systémem nebo počítačem pro zásobník.
Jazyky podobné algolu vám umožňují uspořádat libovolně velké vnoření bloků a každý bude mít své vlastní lokální proměnné.
Lokální proměnné umožňují rekurzi [5] .
Proměnné lokálního rozsahu se používají, aby se předešlo problémům s vedlejšími efekty, ke kterým může dojít u globálních proměnných.
Programovací jazyky, které používají volání podle hodnoty, dávají každému podprogramu místní rozsah lokálních proměnných s lokální kopií argumentů, které mu byly předány.
Lokální proměnná je jakýkoli parametr funkce (například v jazyce C), který nepoužívá odkazy nebo ukazatele.
Statické proměnné jsou speciálním typem lokálních proměnných dostupných v mnoha populárních jazycích (včetně c / c ++, Visual Basic, VB.NET), jejichž podstatou je, že tato proměnná si zachovává svou hodnotu při každém volání funkce. A v každém volání to bude úplně stejné, jako tomu bylo při zavření těla této funkce předtím [6] .
Perl má klíčové slovo , localpro "lokalizaci" proměnných, ale v tomto případě localto neznamená to, co by většina lidí očekávala. [2] Vytváří dočasnou proměnnou s omezenou životností, ale umístěnou v globálním jmenném prostoru. To vám umožní vidět tuto proměnnou v jakékoli funkci volané z tohoto bloku. Chcete-li vytvořit lexikální proměnné, které jsou spíše automatickými proměnnými, použijte my. Chcete-li pochopit, jak to funguje, zvažte následující kód:
$a = 1 ; sub f () { local $a ; $a = 2 ; g (); } sub g () { print "$a\n" ; } g (); f (); g ();Výsledek:
jeden 2 jedenk tomu dochází u názvu globální proměnné $a, který začíná ukazovat na novou dočasnou proměnnou vytvořenou ve funkci f(), ale globální hodnota se obnoví při ukončení funkce f(). Použití myv tomto případě localby místo toho vytisklo 1 třikrát, protože v takovém případě by proměnná $askutečně byla pro funkci lokální f()a nebyla by vidět g(). Z tohoto důvodu se mnozí domnívají, že operátor localby měl mít jiné jméno, jako například save. [5]
Ruby jako jazyk byl také inspirován Perlem, ale v tomto případě byl zápis jednodušší: před jménem globální proměnné musí být znak $, například $název_proměnné, zatímco lokální proměnná prostě nemá Znak $ před jeho jménem, například název_proměnné (v Perlu mají všechny skalární hodnoty na začátku $).
Vydá:
012