Yerel değişken - Local variable

İçinde bilgisayar Bilimi, bir yerel değişken bir değişken bu verilir yerel dürbün. Yerel değişken referansları işlevi veya blok bildirildiği, daha büyük kapsamda aynı değişken adını geçersiz kılar. İçinde Programlama dilleri yalnızca iki görünürlük seviyesi ile yerel değişkenler, genel değişkenler. Öte yandan, birçok Algol türetilmiş diller, özel değişkenler, işlevler, sabitler ve iç içe geçmiş bloklar tarafından içlerinde gizlenmiş türler ile herhangi bir sayıda iç içe geçmiş görünürlük düzeyine izin verir. yuvalanmış işlevler. Yerel değişkenler temeldir prosedürel programlama ve daha genel olarak modüler programlama: yerel kapsam değişkenleri ile ilgili sorunları önlemek için kullanılır yan etkiler ile ortaya çıkabilir genel değişkenler.

Yerel değişkenler sözlü veya dinamik olabilir dürbün ancak sözcüksel (statik) kapsam belirleme çok daha yaygındır. Sözcüksel kapsamda (veya sözlü kapsamda; statik kapsam veya statik kapsam olarak da adlandırılır), bir değişken adının kapsamı belirli bir bloksa, kapsamı blok tanımının program metnidir: bu bloğun metni içinde değişken adı vardır ve değişkenin değerine bağlıdır, ancak bu bloğun metninin dışında değişken adı mevcut değildir. Aksine, dinamik kapsamda (veya dinamik kapsamda), eğer bir değişken adının kapsamı belirli bir bloksa, kapsamı o bloktur ve bu blok tarafından geçişli olarak çağrılan tüm işlevler (başka bir bildirim tarafından tekrar geçersiz kılınması dışında); blok bittikten sonra değişken adı mevcut değildir. Gibi bazı diller Perl ve Ortak Lisp, programcının bir değişkeni tanımlarken veya yeniden tanımlarken statik veya dinamik kapsam seçmesine izin verin. Dinamik kapsam kullanan dil örnekleri şunları içerir: Logo, Emacs lisp ve kabuk dilleri bash, kısa çizgi ve MirBSD Korn kabuğu (mksh ) "yerel" bildirimi. Diğer dillerin çoğu sözcüksel kapsamlı yerel değişkenler sağlar.

Çoğu dilde yerel değişkenler otomatik değişkenler depolanmış çağrı yığını direkt olarak. Bu, ne zaman bir özyinelemeli işlev kendisini çağırır, işlevin her bir örneğindeki yerel değişkenlere ayrı adresler. Bu nedenle, bu kapsamın değişkenleri herhangi bir risk olmadan bildirilebilir, yazılabilir ve okunabilir. yan etkiler bildirildikleri bloğun dışındaki işlevlere.

Kullanan programlama dilleri değere göre arama anlambilim, çağrılan bir alt rutini kendi yerel kopyasıyla birlikte sağlar. argümanlar ona geçti. Çoğu dilde, bu yerel parametreler, alt yordam içindeki diğer yerel değişkenlerle aynı şekilde ele alınır. Tersine, referansla arama ve isimle aramak anlambilim, parametrelerin bağımsız değişken olarak iletilen değerlerin takma adları olarak hareket etmesine izin vererek alt yordamın değişkenleri kendi kapsamı dışında değiştirmesine izin verir.

Statik yerel değişkenler

A adı verilen özel bir yerel değişken türü statik yerel, birçok yaygın dilde mevcuttur ( C /C ++, Visual Basic, ve VB.NET ) bir değerin işlevin bir çağrısından diğerine tutulmasına izin verir - bu bir statik değişken yerel kapsam ile. Bu durumda, işleve yapılan özyinelemeli çağrıların da (single, statik olarak ayrılmış ) değişken. Yukarıdaki tüm dillerde, statik değişkenler özel bir depolama sınıfı anahtar kelime (ör. statik).

Global işlevlerdeki statik yereller, aşağıdakilerle aynı ömre sahiptir: statik genel değişkenler, çünkü değerleri programın ömrü boyunca hafızada kalır,[1] ama var işlev kapsamı (genel kapsam değil), otomatik yerel değişkenlerde olduğu gibi.

Bu, diğer kullanımlarından farklıdır. statik anahtar kelime, çeşitli dillerde birkaç farklı anlamı olan.

Perl'deki yerel değişkenler

Perl hem dinamik hem de sözcüksel kapsamlı yerel değişkenleri destekler. Anahtar kelime yerel yerel dinamik kapsamlı değişkenleri tanımlamak için kullanılırken benim yerel sözcük kapsamlı değişkenler için kullanılır. Dinamik kapsam belirleme günümüzde daha az yaygın olduğu için Perl belgeleri şu konuda uyarıyor: "yerel çoğu insanın "yerel" olarak düşündüğü şey değil.[2] Bunun yerine yerel anahtar kelime geçicidir, dinamik kapsamlı değerini çevreleyen bloğun sonuna kadar süren global (paket) bir değişkene dönüştürür. Bununla birlikte, değişken, blok içinden çağrılan herhangi bir işlev tarafından görülebilir.[3] Sözcük kapsamlı yerel değişkenler oluşturmak için, benim bunun yerine operatör.[4]

Nasıl çalıştığını anlamak için aşağıdaki kodu göz önünde bulundurun:

$ a = 1;alt f() {    yerel $ a;    $ a = 2;    g();}alt g() {    Yazdır "$ a  n";}g();f();g();

bu çıktı:

121

Bu, $ a global değişkeni yeni bir geçici (yerel) içindeki anlam f (), ancak kapsam dışına çıkıldığında küresel değer geri yüklenir f ().

Kullanma benim bu durumda yerine yerel 1'i üç kez basardı çünkü bu durumda $ a değişken, işlevin statik kapsamı ile sınırlı olacaktır f () ve tarafından görülmedi g ().
Randal L. Schwartz ve Tom Phoenix, operatörün yerel gibi farklı bir isme sahip olmalıydı kayıt etmek.[5]

Ruby'deki yerel değişkenler

Yakut bir dil olarak Perl'den de esinlenilmiştir, ancak bu durumda gösterim daha basit hale getirilmiştir: küresel bir değişken adının önünde bir $ işareti olmalıdır, örneğin $ değişken_adıyerel bir değişkenin adının önünde $ işareti yokken, değişken ismi (perl'de tüm skaler değerlerin önünde bir $ vardır). Ruby'nin yalnızca Perl'inki gibi statik kapsamlı yerel değişkenler için yerleşik destek sağladığını unutmayın. benim, Perl'inki gibi dinamik kapsamlı yerel değişkenler değil yerel. Ruby için dinamik kapsamlı değişkenler sağlayan en az bir kitaplık vardır.[6]

Ayrıca bakınız

Referanslar

  1. ^ "Mevcut C standardı" (PDF). (3,61 MB) (2009 itibariyle). Özellikle bkz. Bölüm 6.2.4 “Nesnelerin saklama süreleri”, sayfa 32.
  2. ^ perldoc.perl.org: yerel
  3. ^ perldoc.perl.org: perlsub: Geçici Değerler aracılığıyla yerel()
  4. ^ perldoc.perl.org: perlsub: Özel Değişkenler aracılığıyla benim()
  5. ^ Randal L. Schwartz ve Tom Phoenix (2001-07-01). Perl 3. basımı öğrenmek. O'REILLY. paragraf 4.7. ISBN  0-596-00132-0.
  6. ^ Conrad Irwin. "LSpace: Ruby için dinamik kapsam". Aralık 2012http://cirw.in/blog/lspace Erişim tarihi: 2013-10-16.