SORU
26 NİSAN 2012, PERŞEMBE


Hiçbir koşul ise Perl:

** 12, göre while deyimi ifadesi true olduğu sürece blok yürütür. Boş bir ifade ile sonsuz bir döngü olur merak ediyorum:

while () { # infinite loop
 ...
}

Sadece doktor yanlışlık mı?

CEVAP
26 NİSAN 2012, PERŞEMBE


$ perl -MO=Deparse -e 'while () { }'
while (1) {
    ();
}
-e syntax OK

while () {} while (1) {} eşdeğer gibi görünüyor. Ayrıca boş parens* boş blok eklenir unutmayın.

Önceden tanımlanmış derleyici davranış: bir başka örneği

$ perl -MO=Deparse -e 'while (<>) { }'
while (defined($_ = <ARGV>)) {
    ();
}
-e syntax OK

Bu sadece doktorlara özel bir durum değil, rapor olduğunu söyleyebilirim.

* -; hassas, stub işlem kodu eklenir. Hiçbir şey yapmaz, ama enterloop işlem kodu için git bir hedef yapar. Bu not için gerçek bir sebep yok. Deparse parens kodu oluşturmak olmadığından stub bu operasyon boş parens kullanarak gösterir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • karneson

    karneson

    23 Temmuz 2006
  • OnlyFunClips

    OnlyFunClips

    16 ŞUBAT 2012
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006