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
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.
Perl'de benim ve bizim arasındaki fark...
'klasik arasındaki farkı' ve...
Unut hg ve hg arasındaki farkı kaldırm...
'hesabı' Yerel Sistem ve �...
İstemci tarafı arasındaki farkı ve sun...