SORU
24 EYLÜL 2008, ÇARŞAMBA


Benim arasındaki farkı ve Perl yerel nedir?

Her ikisi de hata ayıklama için çalışıyorum, bu betik görüyorum ve Edebiyatı sadece belli değil. Birisi bana bu sır perdesini aralamak olabilir?

CEVAP
24 EYLÜL 2008, ÇARŞAMBA


Kısa cevap my sözlü kapsamında özel bir değişken olarak işaretliyor, local dinamik bir kapsamda özel olarak bir değişken işaretler.

O zaman daha kolay alışıldık yerel bir değişken oluşturur beri my, anlamak için. Yeni bir değişken oluşturulur ve genellikle kıvırcık parantez ile işaretlenmiş kapsayan sözlü blok içinde ulaşılabilir. Kıvırcık-brace kural, bu gibi bazı istisnalar vardır

foreach my $x (@foo) { print "$x\n"; }

Ama bu sadece Perl ne demek istediğini yapıyor. Normalde böyle bir şey var:

sub Foo {
   my $x = shift;

   print "$x\n";
}

Bu durumda, $x yordam için özel ve kapsam kıvırcık parantez ile çevrilidir. Not, Bu local kontrast şey my bir değişkenin kapsamı dosyasında yazılı olarak kodunuzu saygı ile tanımlanır. Derleme bir olgu.

local, arama açısından düşünmek gerekir anlamaya çalıştığı gibi programınızı yığını. Ne zaman bir değişkendir local, yeniden gelen noktada olan local deyimi yürütür için her şeyi aşağıda yığında kadar geri geri yığını için arayanın blok içeren local.

Bu ilk başta kafa karıştırıcı olabilir, aşağıdaki örneği ele alalım.

sub foo { print "$x\n"; }
sub bar { local $x; $x = 2; foo(); }

$x = 1;
foo(); # prints '1'
bar(); # prints '2' because $x was localed in bar
foo(); # prints '1' again because local from foo is no longer in effect

foo ilk kez çağrıldığında, 1 $x küresel değer görüyor. bar denir local $x çalıştığında, o $x global yığın yeniden tanımlıyor. Şimdi foo bar, çağrıldığında $x 2 yeni değer görüyor. Şimdiye kadar aynı şey local çağrısı olmadan olmazdı çünkü çok özel değil. Sihirli bar döner çıkış yaparken dinamik kapsam local $x ve önceki genel $x tarafından oluşturulan kapsam geri geliyor. Yani foo, $x son çağrı için 1'dir.

Hemen hemen her zaman senin aradığın yerel değişken verir beri my, kullanmak isteyeceksiniz. Mavi ay, local gerçekten kullanışlı güzel şeyler yapmak için bir kez.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • maxman.tv

    maxman.tv

    29 EKİM 2013
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006